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++ Primer Plus 第6版 中文版 清晰有书签PDF+源代码
将C语言梳理一下,分布在以下10个章节中:
Linux-C成长之路(十):其他高级议题