首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

sizeof求数组长度不解.请问

2012-04-06 
sizeof求数组长度不解..请教!本来是要求两个数组的和.可在求数组长度的时候却出错.在主函数中定义了 a,b数

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
[解决办法]

探讨
找本C语言基础书,比如《C语言大全》,看一下形参中数组自动退化为指针的章节吧。

[解决办法]
没错,当数组作参数的时候,就退化为point,所以大小就是了.
如果是正常的使用数组,就是实际的大小了。所以一般都建议自己把数组的大小单独传送了。

热点排行