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) организация цикла последовательного ввода значений элементов массива.