失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 数组作为函数参数传递

数组作为函数参数传递

时间:2020-05-05 09:14:50

相关推荐

数组作为函数参数传递

数组作为函数参数传递

数组作为函数参数传递时,传入的是数组首地址,并非数组本身。今天总算理解了这一点。写了一个打印数组元素的函数,代码如下:

void print1(int arr[]) {int len = sizeof(arr) / sizeof(arr[0]);cout << sizeof(arr)<<endl;for (int i = 0;i < len;i++) {cout << arr[i] << " ";}}

main函数:

int arr[5] = {1,2,3,4,5 };print1(arr);

运行结果:

显然,并没有打印出数组所有元素。根据输出,sizeof(arr)=4;

sizeof(arr)/sizeof(arr[0])=1。很明显,如果传入的是数组本身,sizeof(arr)的值一定远大于4。传入的是地址的话,则刚好是4个字节。

再看我写的第二个打印函数:

void print2(int arr[], int len) {for (int i = 0;i < len;i++) {cout << arr[i] << " ";}}

main函数

int arr[5] = {1,2,3,4,5 };int len = sizeof(arr) / sizeof(arr[0]);cout << "数组长度:"<<len<<" 数组所占空间:"<< sizeof(arr)<<endl;print2(arr, len);

运行结果:

结果准确无误。

总结:当数组作为函数参数传递时,不能在函数中用sizeof求数组长度。

如果觉得《数组作为函数参数传递》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。