【发布时间】:2013-04-10 03:02:01
【问题描述】:
为什么指向的地方的地址一直在变化?导致这种情况发生的内存中发生了什么,或者我的 printf 语句有什么问题?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char blocks[3] = {'A', 'B', 'C'};
char *ptr = &blocks[0];
char temp;
temp = blocks[0];
printf(" %c, %d ", temp, &temp);
return 0;
}
输出
A, 1764940775
A, 1731746791
【问题讨论】:
-
“指向的地方”,即
temp,是一个单字符栈变量;不是你的缓冲区,指向它的指针,或任何相关的东西(尽管它们也在堆栈上)。也就是说,做 10,000 次,你就会看到模式的形成。