数组作为函数的参数:
1.定义语法:
返回值类型 函数名(类型数组名[]){
函数体;
}
例如: void array(int str[]){
str[0]=10;
str[1]=20;
}
注意:参数里数组名中括号的长度,可写可不写,写了也没用,规范的写法是不写
引用传递:
传递的是地址,就好比是把内存共享了一份给函数
特点:在函数内改变了形参的值,那么外面的实参也会发生变化
例如:
void array(int nums[]){
nums[0]=10;
nums[1]=20;
nums[2]=30;
nums[3]=40;
nums[4]=50;
}
int main{int nums[5] ={1,2,3,4,5};
array(nums);
return 0;
}
数组作为函数的参数是引用传递,因为数组是共享空间的,也就是所谓的引用传递
在函数中遍历数组:
如果在函数内计算这个数组的长度,永远都会等于2,并不是真实的长度
解决方法:
如果以后要用数组作为函数的参数,那么必须再加一个参数,用来传入数组的长度
例如:
void array(char chs[],int length){
for (int i=0; i<length; i++) {
printf("%c\n",chs[i]);
}
}
int main{
char chs[] ={'a','b','c','d','e'};
int len= sizeof(chs) / sizeof(char);//计算数组长度
array(chs, len);
return0;
}
注意:
因为数组名是一个地址常量 不能通过数组名直接赋值
1.数组和数组变量之间,不能赋值
例:int nums[5] = {1,2,3,4,5};
int nums2[5] = nums; //报错
2.数组名声明后也不能赋值
int nums[5];
nums = {1,2,3,4,5};
总结:
数组作为函数的参数,形参不需要写长度
必须再加一个参数,让调用者传入数组的长度
数组作为函数的参数,不区分,但是区分类型