【C语言】数组名传递给函数,数组的sizeof变为4的原因
2014-09-03 19:49
225 查看
C语言中,数组名作为参数传递给函数时,退化为指针,sizeof对指针操作结果应该是4。例子如下:
所以函数中如果需要数组的大小时,需要我们一个参数传数组名,另一个传数组大小。如下所示:
#include<iostream> using namespace std; void Swap_arr(char* charArr){ int len = sizeof(charArr); cout << "len =" << len << endl; //输出len =4 } int main(){ char charArr[] = "abcdefgh"; Swap_arr(charArr); return 1; }
所以函数中如果需要数组的大小时,需要我们一个参数传数组名,另一个传数组大小。如下所示:
#include<iostream> using namespace std; void test_arr(char* charArr, int len){ cout << "len =" << len << endl; //输出:len =8 } int main(){ char charArr[] = "abcdefgh"; int len = sizeof(charArr) / sizeof(charArr[0]) - 1; test_arr(charArr,len); return 1; }
相关文章推荐
- C语言技巧:怎样把数组作为参数传递给函数?
- C语言中,数组名作为参数传递给函数时,退化为指针
- c语言一维数组做参数传递给函数:
- C语言中 数组作为函数形参传递相当于指针,在函数中不能得到数组长度,只能得到指针长度4
- c语言中函数的形参是数组的时候,传递的是地址
- [c语言]sizeof() 居然不是函数?!!strlen()和sizeof()纠缠在一起再碰到不同类型的数组,你还能分辨清吗?
- c语言:sizeof的使用,其不是函数,是一个操作符关键字,定义一个数组arr,输出arr和&arr的区别
- c语言传递数组给函数的三种方式(注意均为引用传递)
- c语言之函数参数传递之数组篇
- C语言中,数组名作为参数传递给函数时,退化为指针
- C语言中如何将数组作为函数参数传递
- 黑马程序员---------C语言 关于数组被当作函数参数传递的问题
- c语言一维数组做参数传递给函数:
- c语言中函数的形参是数组的时候,传递的是地址
- C语言中多维数组的常见动态分配方式及其在函数参数传递时的应用
- c语言:sizeof的使用,其不是函数,是一个操作符关键字,定义一个数组arr,输出arr和&arr的区别
- C语言中,数组名作为参数传递给函数时,退化为指针
- (转载) C语言技巧:怎样把数组作为参数传递给函数?(值传递和指针传递)
- C语言中,数组名作为参数传递给函数时,退化为指针
- c语言中用函数传递数组的两个方法