C语言,运行结果3

要过程

第1个回答  推荐于2016-08-06
main函数处理
1、p = &x, 即p指向x的地址

2、f(p,a),即将x的地址和数组a传入到函数f中

f函数处理
3、*p = 10,p指向x的地址,*p即x的内容,相当于x = 10

4、p = a,a就是数组的首地址,即第一个元素的首地址,即&a[0]

5、*p = 100,p指向的是a[0]的地址,相当于a[0] = 100

main函数处理
6、main将p传入到了函数f里面,只是一个值传递,函数f里面更改p的值,对main函数没有效果,因此在main函数中,p还是指向x的地址

7、因此后续打印为,x的值已经更改为10,*p还是x的地址,也是10,a[0]的值已经更改为100,a[1]的值没有改变,还是2。因此打印为10-10-100-2本回答被提问者采纳
第2个回答  2014-12-16

结果10-10-100-2。

#include <stdio.h>
void f(int *p, int *a)    //先前x的地址,数组a的开始位置 (值copy)
{
*p = 10;            // 表示x=10
p=a;                // p被修改为指向a
*p=100;             // a[0]被设置为100
}
int main()
{
int x = 0,*p,a[3]={1,2,3};
p=&x;               // p指向x
f(p,a);             // p指向x, a表示数组开始位置
printf("%d-%d-%d-%d", x,*p,a[0],a[1]);   //x=10,p还是指向x所以也是10
return 0;                                //a[0]=100,a[1]=2
}

相似回答