Указатели позволяют эффективно работать с массивами. Имя массива представляет собой скрытую форму указателя.
Mas -> &mas[0]; - определяется адрес 1-го элемента массива. Оба выражения являются константными выражениями и не меняются на протяжении работы программы. Их можно присваивать переменной типа указатель.
void main(void){
int dates [4], *pti, i;
float bills [4], *ptf;
pti=dates;
ptf=bills;
for (i=0; i<4; i++)
printf ("указатель +%d: %10u и %10u\n", i, pti+i; ptf+i);
}
Указатель +0: 56014 56026 - начало адреса массивов.
+1: 56016 56030
+2: 56018 56034
+3: 56020 56038
Прибавляя 1 к указателю, переходим к следующему элементу массива, а не к следующему байту, т.е. смещаемся на длину типа элемента массива.
рt pt+1 pt+2 pt+3
dates+2 <=> &dates[2]
*(dates+2) <=> dates[2]
*dates+2 <=> *(dates)+2
//Суммирование элементов массива с использованием указателя.
for(i=0;i<10; i++)
sum+=*(ptm+i);
или
for(i=0;i<10; i++){
sum+=*ptm;
ptm++;
}
или
for(i=0;i<10; i++)
sum+=*ptm++;