第1个回答 2013-09-14
你记住:要使用函数操作其他变量的值时,有两种方式:传一个地址,或者使用引用。
上题就是考你这个。
所以要修改S的值,就有多种方式;
1.需要给函数加一个返回值,把S的值返回。在主函数中S = fun(。。。);
2.或者修改函数定义, fun(int*,int* ,int & S),在C++中才可以用引用。
3.或者调用函数时,fun(a, b, &s);
这样就能达到函数的功能了。本回答被网友采纳
第2个回答 2013-09-14
函数fun的形式参数s只从被调用处得到一个拷贝,函数中对拷贝的任何操作都不会影响原来的变量值。而且,你这里在fun中没有用传过去的值,而是为s重新分配内存,与传来的值都八杆子打不着,更不要说与主函数中的s有什么联系了。所以主函数中的s的值一直是a,故输出*s就是输出*a,自然是1了……
第3个回答 2013-09-14
S在main中的值是1,在fun中修改为11,但没有把值返回。
在fun中修改了s地址,但fun结束后,s指向的内存变回了a的内存,所以*s=a[0]=1;
你可以把malloc那句注释掉,你就发现s的值就是11了;
第4个回答 2013-09-14
fun()函数里面。s=(int *)malloc(sizeof(int));语句重新分配了地址,而实参int *s未传入,形参s被重新定义了,即原来a[2]中内容未被改变,故为1。
去掉s=(int *)malloc(sizeof(int));就为11了。
第5个回答 2013-09-14
这个,正确答案就是他啊