Может кто-нибудь объяснить это?
Рассмотрим эту программу. Мы намеренно пишем модифицировать dest[10]
, чтобы увидеть изменение j
.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char source[] = "Hello";
int j = 100;
char dest[10];
dest[12] = 'A';
printf("j = %d \n", j);
fflush(stdout);
printf("j = %d \n", j);
fflush(stdout);
printf("*j = %p \n", &j); // comment this line to get another result!
return 0;
}
вывод:
j = 4259940
j = 4259940
*j = 0x7ffcc4cdef74
Но если мы прокомментируем строку, отображающую j
адрес переменной printf("*j = %p \n", &j);
, мы получим:
j = 100
j = 100
Это похоже на j
хранится в другом месте, а не только после переменной dest
, как в первом примере.
Любое объяснение?