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语言梳理一下,分布在以下10个章节中:
- Linux-C成长之路(一):Linux下C编程概要 http://www.linuxidc.com/Linux/2014-05/101242.htm
- Linux-C成长之路(二):基本数据类型 http://www.linuxidc.com/Linux/2014-05/101242p2.htm
- Linux-C成长之路(三):基本IO函数操作 http://www.linuxidc.com/Linux/2014-05/101242p3.htm
- Linux-C成长之路(四):运算符 http://www.linuxidc.com/Linux/2014-05/101242p4.htm
- Linux-C成长之路(五):控制流 http://www.linuxidc.com/Linux/2014-05/101242p5.htm
- Linux-C成长之路(六):函数要义 http://www.linuxidc.com/Linux/2014-05/101242p6.htm
- Linux-C成长之路(七):数组与指针 http://www.linuxidc.com/Linux/2014-05/101242p7.htm
- Linux-C成长之路(八):存储类,动态内存 http://www.linuxidc.com/Linux/2014-05/101242p8.htm
- Linux-C成长之路(九):复合数据类型 http://www.linuxidc.com/Linux/2014-05/101242p9.htm
- Linux-C成长之路(十):其他高级议题
相关推荐
tydldd 2020-06-14
lightindark 2020-06-03
baishuwei 2020-06-03
baike 2020-05-14
菇星獨行 2020-04-20
拉斯厄尔高福 2020-04-18
choupiaoyi 2020-04-18
GoatSucker 2020-04-11
Joymine 2020-01-10
Joymine 2019-10-27
linuxhh 2011-11-17
penkgao 2012-06-03
TTdreamloong 2011-05-25
小菜鸟 2013-09-26
浪漫老猫 2013-10-10
thisisid 2019-06-28
qingsongzdq 2019-06-28
wkrjwlt 2019-06-26