Учебное пособие: Основы C

strcpy(WGruppa[1].Fio,"Ivanow G.I.");

WGruppa[1].God = 1977;

WGruppa[1].Gruppa = 384;

strcpy(WGruppa[1].D_addr.City,"Shadrinsk"); strcpy(WGruppa[1].D_addr.Street_Nd_Kw,"Lenina 10 kw.1");

strcpy(WGruppa[2].Fio,"Petrow R.G.");

WGruppa[2].God = 1978;

WGruppa[2].Gruppa = 384;

strcpy(WGruppa[2].D_addr.City,"Kataisk"); strcpy(WGruppa[2].D_addr.Street_Nd_Kw,"Akulowa 1 kw.2");

printf("Fio1 = %s\n",WGruppa[1].Fio);

printf("God1 = %d\n",WGruppa[1].God);

printf("Gruppa1 = %d\n",WGruppa[1].Gruppa);

printf("City= %s\n",WGruppa[1].D_addr.City);

printf("Street= %s\n",WGruppa[1].D_addr.Street_Nd_Kw);

printf("Fio2 = %s\n",WGruppa[2].Fio);

printf("God2 = %d\n",WGruppa[2].God);

printf("Gruppa2 = %d\n",WGruppa[2].Gruppa);

printf("City= %s\n",WGruppa[2].D_addr.City);

printf("Street= %s\n",WGruppa[2].D_addr.Street_Nd_Kw);

}

1.4.6 Область видимости и время жизни переменных

По области видимости переменные в Си можно разделить на три группы:

1.Переменная, определенная во всех модулях (файлах) программы. Такая переменная определяется при помощи ключевого слова extern. Эта переменная будет видна во всех точках программы. Такая переменная является глобальной для всей программы.

2.Переменная, определенная в одном из модулей (файле) перед текстами всех функций. Такая переменная будет глобальной для данного модуля, т.е. может быть использована во всех точках данного модуля.

3.Переменная определенная в данной функции. Эта переменная может быть использована только в пределах данной функции. Такую переменную мы будем называть локальной.

По времени жизни все переменные можно разделить на две группы:

1.Переменные живущие в течении работы программы.

2.Переменные уничтожающиеся после выхода из функции.

Глобальные переменные относятся к первому типу по времени жизни. Локальные переменные уничтожаются по выходу из функции. В том случае, когда мы хотим сделать локальную переменную долгоживущей используется слово static. Локальные переменные имеющие такой тип живут начиная с момента первого вызова функции и до конца работы программы. Однако в смысле видимости эти переменные остаются локальными. Запись staticinti=0; Означает, что переменная инициализируется нулем при первом входе в функцию, но при последующих входах в функцию ее значение сохраняется в зависимости от тех действий, которые над ней были произведены.

Современные компиляторы Си транслируют программу так, чтобы максимально оптимизировать ее работу. Одним из средств оптимизации это хранение переменных, когда это возможно в регистрах, вместо ячеек памяти. В тех случаях когда вы хотите запретить, чтобы данная переменная хранилась в регистрах используется модификатор volatile. Такая необходимость может возникнуть если предполагается возможность изменение переменной в результате внешнего воздействия (например прерывания).

И последнее замечание. Динамически выделенная память, где бы вы ее не выделяли живет до тех пор пока вы ее не освободили.

1.5 Основные операторы

К-во Просмотров: 1114
Бесплатно скачать Учебное пособие: Основы C