c语言中,子函数中形参的值不能传给实参,但其他被改变的值能在主函数中被保留下来?对么?为啥?

2025-03-23 05:13:31
推荐回答(2个)
回答1:

调用一个函数的时候,比如:

int func(int a,int b,int *c);
int main(){
int i1,i2,i3[12];

func(i1,i2,i3);

return 0;
}
调用func的时候,首先在函数func的区域内(就和main的区域一样,其他区域的操作不能访问main里面的变量)建立了3个变量:int a,int b;int *c。

随后,main里面作为参数的变量的值被复制到这几个变量中也就是:a=i1,b=i2,c=i3。

因为是复制值的缘故,a,b,c和i1,i2,i3仅仅在数值上相同以外,就没有关联了。

注意,这里的i3是一个数组的首地址,本身并不代表这个数组,在函数调用的时候,复制给c的是i3的值,也就是这个数组的首地址。

回答2:

这是因为子函数中的形参 在函数结束时就被释放了