2 u012122743 u012122743 于 2014.07.15 17:19 提问

c语言里面malloc的问题
c

代码如下:

   #include<stdio.h>                                                          

void main()
{
int *a = NULL;
int b[10];

       a = malloc(sizeof(int)*10);

      printf("a:%ld\n",sizeof(a));

      printf("b:%ld\n",sizeof(b));

      free(a);

}

出来的结果为什么是
a:8
b:40
求解第一个为什么是8?

2个回答

JJBomb
JJBomb   2014.07.16 10:14

你的是64位的操作系统

u012122743
u012122743 哦,多谢~~
接近 4 年之前 回复
starytx
starytx   Rxr 2014.12.10 11:43

sizeof(a); a是一个指针,所以计算的是一个指针的大小,不同系统大小不一。32位一般是4,你的应该是64位
sizeof(b); b是数组名,计算的是数组的大小,

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!