主函数中定义的数组作为形参调用时如何知道数组的长度

例如以下代码voidf(inta[]){printf("func%d\n",sizeof(a));}voidmain(){inta[50]={0};printf("mai... 例如以下代码
void f(int a[]){
printf("func %d\n", sizeof(a));
}
void main() {
int a[50]={0};
printf("main %d\n", sizeof(a));
}
结果是主函数中大小为200,函数中长度为4,为什么不是200呢,怎么才能得到数组的大小呢。
展开
 我来答
kaixingui2012
2015-02-10 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6379万
展开全部
void f(int a[]){
printf("func %d\n", sizeof(a)); //a是地址,即指针,所以,变量所占空间大小为4 在子函数中,如果函数调用者没有将数组大小传入子函数,则子函数是无法得到数组大小的。
}
追问
那为什么主函数总能显示200呢....
追答
int a[50]={0};
printf("main %d\n", sizeof(a)); 这里a是数组,sizeof(a)表示数组所占的空间大小=50*sizeof(int)=50*4=200个字节 数组才可以达到效果。

而只要不在数组的定义区域引用数组,都会认为是指针,所以,传到函数中就不能得到了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式