Member 12921311 Ответов: 2

О том, как решать дано каждому в целое число в C?


главный()


{

int x;
int *y;
x=5;
y=& x;
printf ("%d", y);

printf ("\n%d", y+1);

выход этой программы приближается

22124
22128
здесь я увеличиваю y на 1; и он получает увеличение на 4.... Почему?

Что я уже пробовал:

почему это 22128 вместо 22125?

2 Ответов

Рейтинг:
2

Patrice T

Цитата:

22124
22128
здесь я увеличиваю y на 1; и он получает увеличение на 4.... Почему?

Это связано с размером int.
Когда вы добавляете 1 к y, вы не добавляете 1 в адрес, вы добавляете размер целого числа, которое равно 4.
C Типы Данных[^]


Рейтинг:
2

Jochen Arndt

y является указателем на целое число. При арифметике указателей используется размер элементов, который составляет четыре байта для int.

Просто подумайте об указателе на массив. Чтобы получить доступ к следующему элементу, адрес должен быть увеличен на размер элемента:

int firstItem = y[0];
int *firstAddr = &y[0]; // or: y
int secondItem = y[1];
int *secondAddr = &y[1]; // or: y + 1