我是C的新手,我有一个疑问.
由于C函数创建了它的参数的本地副本,我想知道为什么以下代码按预期工作:
void function(int array[]){
array[0] = 4;
array[1] = 5;
array[2] = 6;
}
int main(){
int array[] = {1,2,3};
function(array);
printf("%d %d %d",array[0],array[1],array[2]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
线路输出为4 5 6.
为什么这样做有效而以下情况不然?
void function(int integer){
integer = 2;
}
int main(){
int integer = 1;
function(integer);
printf("%d",integer);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,输出仅为1.
简短版本:为什么函数可以修改父变量的值,如果它们作为数组传递?
谢谢你们!