一个指针变量的长度确实为4吗。int a[5],sizeof(&a)是多少
#include<stdio.h>
int main(void)
{
int a[5];
int *p1,*p2;
p1=a;
//p2=&a;
printf("%d %d\n",sizeof(p1),sizeof(a[5]));
printf("%d %d\n",sizeof(&a[0]),sizeof(&a));
return 0;
}
为什么在vc中结果为:4 4 4 20;
而在gcc中结果为 4 4 4 4 ;
一个指针变量的长度确实为4吗。
int a[5]; sizeof(a)和sizeof(&a)为什么在vc中和Gcc中求的值不同;
&a和a前者是整个数组中的地址,后面是首元素的地址。他们在内存中存储有什么区别吗?
[解决办法]
这结贴率。。。。。
[解决办法]
个人觉得哈,&a是指针,sizeof(&a)应该是4的,sizeof(a)这个是20
[解决办法]
vc6的编译器有不少毛病,不用深刻分析
[解决办法]
[解决办法]
你知不知道turbo c是什么年代的?现在c++ builder也有些不合标准的地方。
[解决办法]
你要用就用最新版的vc
[解决办法]
[解决办法]
楼主,珍惜生命,远离VC6
[解决办法]
指针长度等于地址编制长度~
你多少位的操作系统就是多少位的指针~
[解决办法]
按理说p1 = a = &a = &a[0]都是表示数组的起始地址 32位的一般都是4字节的
为什么会出现20 应该是编译器的问题了 书上还没看到&a是整个数组的地址大小的
可以运行下printf("%d %d %d %d\n",p1,a,&a,&a[0]);看看输出是不是一样
定义int a[5] 就只有a[0] a[1] a[2] a[3] a[4] 测试 sizeof(a[5])?
没定义内存,测出来的值就不是你定义的类型的大小了,是32位一般会给4bytes吧 这个我也不知道