sizeof求数组长度不解..请教!
本来是要求两个数组的和.可在求数组长度的时候却出错.
在主函数中定义了 a,b数组.
在main函数中sizeof(a)/sizeof(a[0])执行结果为4.
但是在arraysum函数中执行sizeof(a)/sizeof(a[0])结果却为1.
为什么会出现这问题.
void arraySum(int a[],int b[])
{
cout<<"sizeof(a)"<<sizeof(a)<<endl;
cout<<"sizeof(a[0])"<<sizeof(int)<<endl;
int length_a = sizeof(a)/sizeof(int);
}
void main()
{
int a[]={1,2,3,4};
int b[]={1,2,3,4};
cout<<"main:a[]"<<a<<"sizeof(a)"<<sizeof(a)<<endl;
cout<<sizeof(a)/sizeof(a[0])<<endl;
arraySum(a,b);
}
[解决办法]
找本C语言基础书,比如《C语言大全》,看一下形参中数组自动退化为指针的章节吧。
[解决办法]
void arraySum(int a[],int b[])
在函数中用数组做参数和用指针做参数等价
既然指针的大小都是4,sizeof(a)就是4,sizeof(a[0])也是4,结果就是1
[解决办法]
[解决办法]
没错,当数组作参数的时候,就退化为point,所以大小就是了.
如果是正常的使用数组,就是实际的大小了。所以一般都建议自己把数组的大小单独传送了。