先来看一个例子:
#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);