数组传递
C语言的数组名传递到子函数后,子函数的形参接收到的是数组的起始地址,不能把数组的长度传递给子函数
void print(int a[]) { //a:0x61fe00
int i;
// 指针的大小是8个字节(64位)
for (i=0;i<sizeof (a)/sizeof(int);i++)
{
// 所以只打印了a[0],a[1]
printf("%d\n",a[i]);
}
}
正确写法
void print1(int a[],int len) {
int i;
for (i=0;i<len;i++)
{
printf("%d\n",a[i]);
}
}
打印看看
int main() {
int a[6]={1,2,3,4,5,6};
print(a);
print1(a,6);
return 0;
}
输出结果
print(a):
1
2
因为sizeof(a)/sizeof(int)中的a接收到的是数组的起始地址,也就是指针。
8个字节,所以只输出了a[0],a[1]
print1(a,6):
1
2
3
4
5
6