Лекция: Sizeof(float)
-J------ L
sizeof(data)
■*i
Рис. 1.5
Форма обращения к элементам массива с помощью указателей следующая:
• data[0] ==*p\;
• data[\]==*(p\ + 1);
• data[2] = *(pl +2);
• data[i\ == *(p\ + /);
• data[n-\] == *(p\ + n- 1). Операции над указателями p 1 и/?2:
•p\ =p2 — проверка на равенство; •p\\=pl — проверка на неравенство; •р\ <р2 — сравнение указателей на меньше; •р\ <=р2 — сравнение указателей на меньше или равно; •р\ >р2 — сравнение указателей на больше; •р\ >=р2 — сравнение указателей на больше или равно; •р2 — pi — вычисление количества элементов между р2 и/Л; •р\ + i — наращивание указателя на / элементов; •р\ — i — уменьшение указателя на / элементов.
При работе с указателями и массивами следует внимательно следить за тем, чтобы адреса, хранимые в указателях, не выходили за рамки адресов массивов.
Пример.Связь между указателями и именами массивов
| #include <std | io. h> | |
| main() { int i; | ||
| float data | [5], *p; | |
| printf("\n | Начальный адрес массива data — %u .", | |
| data); | ||
| printf("\n | Адрес элемента | массива data[0] — %u .", |
| &data [0]); | ||
| printf("\n | Адрес третьего | элемента массива — %u .", |
| &data [3]); | ||
| p=data; /* | р= & data [0]; | */ |
| for ( i=0; { printf( | i<=4; i=i+l) | |
| "\п Адрес %d-ro | элемента массива data | |
| равен % | a .", i+1, p+i); | |
| printf( | "\n Значение %d- | -го элемента массива |
| data равно %f .", i+1, } } | &data[i]); |
Инициализация массивов
Существует два способа инициализации массива:
1) указание начальных значений при объявлении массива;
2) организация цикла последовательного ввода значений элементов массива.