Нет гарантии, что a, b, c, d, e
и f
будут смежными в памяти. Если вам нужна такая гарантия, вам нужно использовать массив.
#include <stdio.h>
int main() {
int a[6];
int *p;
int i;
a[0] = a[1] = a[2] = a[3] = a[4] = a[5] = 0;
p = &a[0];
for (i = 0; i < 6; i++){
*p += i;
p++;
}
for(i = 0; i < 6; i++) {
printf("%d\n", a[i]);
}
return 0;
}
Здесь int a[6]
объявляет массив с именем a
, который может содержать шесть целых чисел. Эти шесть целых чисел можно получить через a[0]
, a[1]
, a[2]
, a[3]
, a[4]
и a[5]
. Вам гарантировано, что a[0]
, a[1]
, a[2]
, a[3]
, a[4]
и a[5]
расположены непрерывно в памяти. Таким образом, линия
p = &a[0];
устанавливает p
на адрес первого элемента. Каждое приращение этого указателя перемещает нас вперед на одну позицию в массиве.
Второй цикл for
показывает, что первый цикл for правильно устанавливает a[i]
в i
для i
в {0, 1, 2, 3, 4, 5}
. Если вы запустите эту программу, вы увидите
0
1
2
3
4
5
на консоли.