2 u013408863 u013408863 于 2014.09.15 00:15 提问

关于C语言的指针问题。

#include
int k=7,m=5;
void f(int s)
{ int *t=&k; s=&t; *s=&m;
printf("%d,%d,%d,",k,*t,
s); }
main()
{ int i=3,*p=&i,**r=&p; }
为什么后面三个答案是3,3,3
而#include
int k=7;
void f(int s)
{ int *t=&k;
*s=t;
printf("%d,%d,%d,",k,*t,
s);
}
main()
{ int i=3,*p=&i,**r=&p;
f(r);
printf("%d,%d,%d\n",i,*p,**r);
}
后面三个是3,7,7(第二个说是实参指针变量所指变量的值改变了,可第一个怎么没变呢)谢谢了

4个回答

zhiheng25
zhiheng25   2014.09.15 01:31

你的描述能再乱点么?
啥代码呀,感觉怎么也编译不过的。

u013408863
u013408863 当时编译运行后复制过来的,不知怎么就成这样了,也没仔细看,不过我现在已经弄明白了,。。还是谢谢你啊
大约 3 年之前 回复
u010136832
u010136832   2014.09.15 08:41

写的神马啊,乱写,根本看不懂你想知道神马。

u013408863
u013408863 原谅我当初编译之后复制的太匆忙了,不知怎么就这样了。。现在已经明白了,总之谢谢你啊
大约 3 年之前 回复
qisini373
qisini373   2014.09.16 08:32

你这 编译能通过????

u013408863
u013408863 当时编译之后复制过来的,不知怎么就成这样了。。现在我已经明白了,谢谢你啊
大约 3 年之前 回复
likely_zhao
likely_zhao   2014.09.16 21:59

应该是参数传进函数不改变参数的数值,应该传进去的是一个拷贝,但是指针传进去了之后,改变指针指向的数值之后,函数返回后数值也就被修改了

u013408863
u013408863 恩恩,,当时想了好几天,终于转过来这个弯了。。原谅我这么晚回,考国二忙忘了
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片