函数中数组形参占用空间大小
void get_array(int a[]);void get_array(int a[])
{
printf("get_array函数中,sizeof(a)=%lu\n",sizeof(a));
}
void main()
{
int a = {1,2,3,4,5,6,7,8,9,0};
printf("main函数中,sizeof(a)=%lu\n",sizeof(a));
get_array(a);
}
main函数中,sizeof(a)=40
get_array函数中,sizeof(a)=8
为啥不是get_array函数中,sizeof(a)=4呢?
因为你的环境是 64位的
人造人 发表于 2020-5-1 22:29
因为你的环境是 64位的
那为啥main函数中,sizeof(a)=40呀?8 * 10 = 80 才对呀,数组里面有十个元素。 THU_LSM 发表于 2020-5-1 22:35
那为啥main函数中,sizeof(a)=40呀?8 * 10 = 80 才对呀,数组里面有十个元素。
你的系统上一个int是4个字节
THU_LSM 发表于 2020-5-1 22:35
那为啥main函数中,sizeof(a)=40呀?8 * 10 = 80 才对呀,数组里面有十个元素。
get_array函数中,sizeof(a)=8 是因为 a 是指针 永恒的蓝色梦想 发表于 2020-5-1 22:37
get_array函数中,sizeof(a)=8 是因为 a 是指针
可是小甲鱼的视频里面二者就是十倍的关系呀 一个是4 一个是40 。。。。 本帖最后由 jkluoling1992 于 2020-5-2 00:18 编辑
void get_array(int a[])
{
printf("get_array函数中,sizeof(a)=%lu\n",sizeof(a));
}
这个函数其实就是
void get_array(int *a)
{
printf("get_array函数中,sizeof(a)=%lu\n",sizeof(a));
}
a是一个指针,指向了数组第一个元素,在64位系统中,指针的大小为8字节,
在32位系统指针大小为4字节
在main函数中,a是一个包含10个int类型数据的数组,求他的数组空间大小,就是4*10 THU_LSM 发表于 2020-5-1 22:53
可是小甲鱼的视频里面二者就是十倍的关系呀 一个是4 一个是40 。。。。
小甲鱼的电脑应该是32位的,64位电脑都是指针都是8
页:
[1]