КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Инициализация данных
При объявлении переменной ей можно присвоить начальное значение, присоединяя инициатор к описателю. Инициатор начинается со знака "=" и имеет следующие формы. Формат 1: = инициатор; Формат 2: = { список - инициаторов }; Формат 1 используется при инициализации переменных основных типов и указателей, а формат 2 – при инициализации составных объектов. Примеры: char tol = 'N';Переменная tol инициализируется символом 'N'. const long megabyte = (1024 * 1024);Немодифицируемая переменная megabyte инициализируется константным выражением, после чего она не может быть изменена. static int b[2][2] = {1,2,3,4};Инициализируется двухмерный массив b целых величин, элементам массива присваиваются значения из списка. Эта же инициализация может быть выполнена следующим образом: static int b[2][2] = { { 1,2 }, { 3,4 } };При инициализации массива можно опустить одну или несколько размерностей static int b[3[] = { { 1,2 }, { 3,4 } };Если при инициализации указано меньше значений для строк, то оставшиеся элементы инициализируются 0, т.е. при описании static int b[2][2] = { { 1,2 }, { 3 } };элементы первой строки получат значения 1 и 2, а второй 3 и 0. При инициализации составных объектов, нужно внимательно следить за использованием скобок и списков инициализаторов. Примеры: struct complex { double real; double imag; } comp [2][3] = { { {1,1}, {2,3}, {4,5} }, { {6,7}, {8,9}, {10,11} } };В данном примере инициализируется массив структур comp из двух строк и трех столбцов, где каждая структура состоит из двух элементов real и imag. struct complex comp2 [2][3] = { {1,1},{2,3},{4,5}, {6,7},{8,9},{10,11} };В этом примере компилятор интерпретирует рассматриваемые фигурные скобки следующим образом: - первая левая фигурная скобка – начало составного инициатора для массива comp2; - вторая левая фигурная скобка – начало инициализации первой строки массива comp2[0].
Значения 1,1 присваиваются двум элементам первой структуры; - первая правая скобка (после 1) указывает компилятору, что список инициаторов для строки массива окончен, и элементы оставшихся структур в строке comp2[0] автоматически инициализируются нулем; - аналогично список {2,3} инициализирует первую структуру в строке comp2[1], а оставшиеся структуры массива обращаются в нули; - на следующий список инициализаторов {4,5} компилятор будет сообщать о возможной ошибке, так как строка 3 в массиве comp2 отсутствует. При инициализации объединения задается значение первого элемента объединения в соответствии с его типом. Пример: union tab { unsigned char name[10]; int tab1; } pers = {'A','H','T','O','H'};Инициализируется переменная pers.name, и так как это массив, для его инициализации требуется список значений в фигурных скобках. Первые пять элементов массива инициализируются значениями из списка, остальные нулями. Инициализацию массива символов можно выполнить путем использования строкового литерала. char str [ ] = "привет";Инициализируется массив символов из 7 элементов, последним элементом (седьмым) будет символ '\0', которым завершаются все строковые литералы. В том случае, если задается размер массива, а строковый литерал длиннее, чем размер массива, то лишние символы отбрасываются. Следующее объявление инициализирует переменную stroka как массив, состоящий из семи элементов. char str[5] = "привет";В переменную stroka попадают первые пять элементов литерала, а символы 'Т' и '\0' отбрасываются. Если строка короче, чем размер массива, то оставшиеся элементы массива заполняются нулями. Отметим, что инициализация переменной типа tab может иметь следующий вид: union tab pers1 = "Антон";и, таким образом, в символьный массив попадут символы: 'А','Н','Т','О','Н','\0', а остальные элементы будут инициализированы нулем.
Дата добавления: 2014-01-07; Просмотров: 367; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |