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++ Primer Plus 第6版 中文版 清晰有书签PDF+源代码
读C++ Primer 之构造函数陷阱
读C++ Primer 之智能指针
读C++ Primer 之句柄类
将C语言梳理一下,分布在以下10个章节中:
- Linux-C成长之路(一):Linux下C编程概要
- Linux-C成长之路(二):基本数据类型
- Linux-C成长之路(三):基本IO函数操作
- Linux-C成长之路(四):运算符
- Linux-C成长之路(五):控制流
- Linux-C成长之路(六):函数要义
- Linux-C成长之路(七):数组与指针
- Linux-C成长之路(八):存储类,动态内存
- Linux-C成长之路(九):复合数据类型
- Linux-C成长之路(十):其他高级议题
本文永久更新链接地址:
评论暂时关闭