C++ 如果一个功能函数参数是一个数组,数组长度怎么处理好

来源:百度知道 编辑:UC知道 时间:2024/06/15 22:52:14
比如,
int a[11]={0};
用的时候,是不是要
hanshu(arr,11)
能不能用
hanshu(arr)
这样的话数组长度是怎么知道的

你可以传参数,也可以用特殊的数组元素标志。
比如你的数组是char txt[10];最后以0结束,就可以在函数里用这个结束标志判断,没有的话就传个长度进去。

sizeof(arr)/sizeof(int)可以确定数组长度

把数组长度也传进去,因为数组名在传给函数时会弱化为指针!提示你,就是说你如果在函数内用sizeof(a)的话肯定会得到一个4,因为弱化为指针!
这样也就不知道长度了!
两种方法!
hanshu(int a[],int n);
2.在数组末尾手动添加一个‘\0’;然后在函数里用strlen计算数组长度!

你可以通过标准库函数中的sizeof()函数来判断数组的长度。如i = sizeof(a[10])

如果数组作为函数的参数,这个参数将被退化为指针,这样的话数组的长度就无从得知了,因此必须同时传入一个表示代表数组大小的参数。

不过也可以使用数组的引用来传参
void hanshu(int (&a)[11])
{
//打印数组的大小
cout<<sizeof(a)/sizeof(int)<<endl;
}
在函数中就可以直接用sizeof()求数组大小了

另外,加上一个结束符也是一个方法,不过将对存入其中的数据产生限制(至少不能为那个结束符了)

c++? 用vector