鱼C论坛

 找回密码
 立即注册
查看: 1312|回复: 7

[已解决]函数中数组形参占用空间大小

[复制链接]
发表于 2020-5-1 22:24:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
void get_array(int a[]);
void get_array(int a[])
{       
        printf("get_array函数中,sizeof(a)=%lu\n",sizeof(a));
       
}
void main()
{
       
        int a[10] = {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呢?
最佳答案
2020-5-2 00:16:58
本帖最后由 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-1 22:29:40 | 显示全部楼层
因为你的环境是 64位的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-1 22:35:21 | 显示全部楼层
人造人 发表于 2020-5-1 22:29
因为你的环境是 64位的

那为啥main函数中,sizeof(a)=40呀?8 * 10 = 80 才对呀,数组里面有十个元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-1 22:37:05 | 显示全部楼层
THU_LSM 发表于 2020-5-1 22:35
那为啥main函数中,sizeof(a)=40呀?8 * 10 = 80 才对呀,数组里面有十个元素。

你的系统上一个int是4个字节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-1 22:37:26 | 显示全部楼层
THU_LSM 发表于 2020-5-1 22:35
那为啥main函数中,sizeof(a)=40呀?8 * 10 = 80 才对呀,数组里面有十个元素。

get_array函数中,sizeof(a)=8 是因为 a 是指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-1 22:53:01 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-1 22:37
get_array函数中,sizeof(a)=8 是因为 a 是指针

可是小甲鱼的视频里面二者就是十倍的关系呀 一个是4 一个是40 。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-2 00:16:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-2 07:27:07 | 显示全部楼层
THU_LSM 发表于 2020-5-1 22:53
可是小甲鱼的视频里面二者就是十倍的关系呀 一个是4 一个是40 。。。。

小甲鱼的电脑应该是32位的,64位电脑都是指针都是8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 17:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表