C语言如何获得数组长度(size/size遇到了问题)

voidbubble_sort(inta[]){intn=sizeof(a)/sizeof(a[0]);//自定义函数中,这个n就等于2了,为什么呢}main(){int... void bubble_sort(int a[]){
int n = sizeof(a)/sizeof(a[0]); //自定义函数中,这个n就等于2了,为什么呢

}
main(){
int a[20];
int n =sizeof(a)/sizeof(a[0]); //主函数中,用此方法可得到正确长度
}
展开
 我来答
piestkj
2015-06-28 · TA获得超过928个赞
知道小有建树答主
回答量:820
采纳率:0%
帮助的人:611万
展开全部
在自定义函数中,形式参数的int a[]被自动转换成int *a,a已经变成了指针,而指针的长度总是4,因此如果int的长度为2的话,sizeof(a)/sizeof(a[0])就是4/2,结果为2。
追问
谢谢,  这种情况,C语言中没办法节省掉一个参数吗。
追答
没办法。
shine1991
科技发烧友

2015-06-28 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部
使用sizeof的方法的前提是使用的是数组名,你这里的形参a,本质是一个指针,无法实现,只能再添加一个参数作为数组长度
追问
谢谢回答,没有其他办法能省一个参数吗。
追答
C里做不到,C++有引用可以做到
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1012144015
2015-06-28 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1343万
展开全部
32位系统应该是1,第一个a是指针应该是4字节,第二个a[0]是整型元素是4字节
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式