C语言传字符数组,求解
#include<stdio.h>
void test(char array[]){
printf("%d;\n", sizeof(array));
}
void main(){
char array[5]={'3','4','1','3','1'};
printf("%d;", sizeof(array));
test(array);
}
输出5,4
我把array长度改了6,输出6,4;
改7,输出7,4;
为什么下面老是4?
求解
[解决办法]
因为在test中,array看上去虽然是数组,其实就是指针
[解决办法]
数组除了在初始化之外,不能整体操作,当然也不能整个复制到函数中
函数传递时,传递的是指向数组首元素的指针
顺便说一句,[]是指针的操作符,数组使用[]也是通过隐式转化为指针才能使用
[解决办法]
数组名作为函数形参的时候会退化为指针!就是这个原因。
[解决办法]