首页 > 代码库 > 【C语言】数组名传递给函数,数组的sizeof变为4的原因

【C语言】数组名传递给函数,数组的sizeof变为4的原因

  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语言】数组名传递给函数,数组的sizeof变为4的原因