- 当函数的形参为基本数据类型时,是值传递,函数内部改变形参,外部实参的值不变
- 当函数的形参为数组时,是内存地址的传递,函数中修改数组的值,外部实参的值也修改
void changeValue(int value);
void changeNum(int v[]);
int main(int argc, const char * argv[]) {
int a = 10;
printf("a===%i\n",a);
changeValue(a);
printf("a===%i\n",a);
int nums[] = {5,9};
printf("nums[0]===%i\n",nums[0]);
changeNum(nums);
printf("nums[0]===%i\n",nums[0]);
return 0 ;
}
void changeValue(int value){
value = 8;
}
void changeNum(int v[]){
v[0] = 11;
}
//输出:
a===10
a===10
nums[0]===5
nums[0]===11
- 在函数中不可用之前的方式(sizeof(数组名称)/sizeof(数组第一个元素))获取数组长度,从而遍历数组了,因为当数组名作为函数参数时, 因为自动转换为了指针类型,用之前的方式得到的一直是指针所占用的字节数8