C语言中 数组作为函数形参传递相当于指针,在函数中不能得到数组长度,只能得到指针长度4
先来看一个例子:
#include<stdio.h>
int main(int argc,char *argv){
/*定义一个长度为10的char数组*/
char a[10];
/*计算该数组长度*/
int len=sizeof(a)/sizeof(char);
printf("数组a的长度为:%d",len);
return 1;
}
输出结果为:数组a的长度为:10
接着再看另一个例子:
#include<stdio.h>
/*声明一个函数*/
int test(char a[]);
int main(int argc,char *argv){
/*定义一个长度为10的char数组*/
char a[10];
/*计算该数组长度*/
int len=test(a);
printf("数组a的长度为:%d",len);
return 1;
}
int test(char a[]){
/*计算该数组长度*/
return sizeof(a)/sizeof(char);
}
输出结果为:数组a的长度为:4
数组作为函数形参传递时,相当于指针,而指针的长度是4个字节,因此显示4,
函数中需要知道数组大小时,需要传入两个参数,一个参数传数组名,另一个传数组大小。
如:int test(char a[],int n);
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步