1

为什么指向的地方的地址一直在变化?导致这种情况发生的内存中发生了什么,还是我的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 
4

2 回答 2

2

看起来您的堆栈指针是随机的。我怀疑这是因为地址空间布局随机化在大多数较新的操作系统中用作安全机制。

于 2013-04-10T03:30:31.273 回答
0

您应该使用%p转换说明符来打印指针值。但是没有理由期望它每次都是相同的值。但是,全局或静态变量应该位于一致的位置。

于 2013-04-10T03:28:17.903 回答