如果您有一个变量,则有一个与该变量关联的内存地址,对于指针变量,该内存地址的“值”是对保存指针指向的实际数据的内存地址的引用.
所以如果我有:
for (int x = 0; x < 2; x++)
{
char * a = (char*)malloc(20);
printf("%p\r\n", &a);
printf("%p\r\n", a);
}
输出应该是这样的:
00999999
04427310
00999999
0442ECF0
正如您所看到的,在每次循环过程中声明的指针变量的第一个和第三个内存地址保持不变,我的理解是,这是因为前一个变量超出范围而下一个可用地址是同一个地址。
这种概括可以扩展到循环内声明的所有变量还是有例外?