【发布时间】:2011-08-26 15:37:01
【问题描述】:
#include <stdio.h>
int main(void)
{
int a[5]={1,2,3,4,5};
int *ptr=(int*)(&a+1);
printf("%d %d\n",*(a+1),*(ptr-1));
return 0;
}
输出:
2 5
这里的语句*ptr= (int*)(&a+1) 1 没有添加到&a。实际上它就像&a + sizeof(a)。现在我的问题是指针变量的大小存储在哪里,或者如果它没有存储,那么它是如何计算的。在int, float, char 等情况下,它们的大小是在编译器中预定义的,因此 int *a 是不同的情况。真的只有地址存储在指针变量中吗?关于指针变量的元数据存储在哪里?
【问题讨论】: