一个c/C++语言的问题关于数组
我在main.c里面main函数里有一个数组a[]={1,2,3,4,5}在main()里面引用到另外一个源文件sourc.c里面的一个函数fun(inta[]);这时,...
我在main.c里面main函数里有一个数组a[]={1,2,3,4,5}
在main()里面引用到另外一个源文件sourc.c里面的一个函数fun(int a[]);
这时,sizeof(a)/sizeof(a[0])=5;(这时sizeof(a)应该是20?)
可是在fun(int a[])里面计算sizeof(a)=4,即
fun(int a[])
{
int b;
b=sizeof(a);
printf("%d",b);
}
结果b为4;这是为什么? 展开
在main()里面引用到另外一个源文件sourc.c里面的一个函数fun(int a[]);
这时,sizeof(a)/sizeof(a[0])=5;(这时sizeof(a)应该是20?)
可是在fun(int a[])里面计算sizeof(a)=4,即
fun(int a[])
{
int b;
b=sizeof(a);
printf("%d",b);
}
结果b为4;这是为什么? 展开
展开全部
因为在函数fun(int a[])里面的形参数组int a[]实质上是一个指针变量,即等价于fun(int *a)。此时,只能将主函数中数组a的首地址传到fun函数,而不能传递数组元素个数。
因此在函数fun里边,用sizeof算出来的是指针变量的字节数,跟main函数中数组a的字节数无关。
一般设置第二个参数,专门传送数组元素的个数。例如,fun(int a[],int n)
因此在函数fun里边,用sizeof算出来的是指针变量的字节数,跟main函数中数组a的字节数无关。
一般设置第二个参数,专门传送数组元素的个数。例如,fun(int a[],int n)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int 类型的 sizeof(int)=4;
sizeof本身不是函数;
sizeof本身不是函数;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fun(int a[])
{
int b;
b=sizeof(a); // a 是数组地址。
printf("%d",b);
}
{
int b;
b=sizeof(a); // a 是数组地址。
printf("%d",b);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询