个人授课 韩国电影下载:c语言问题

来源:百度文库 编辑:高校问答 时间:2024/05/06 17:23:32
#include<stdio.h>
void fun(int *x,int *y)
{
printf("%d %d",*x,*y);
*x=3;
*y=4;
}
void main()
{
int x=1,y=2;
fun(&y,&x);
printf("%d %d",x,y);
}
输出为多少,为设么,不明白题的意思
为什么会是2,1,4 ,3 能解释一下过程吗?

想证明函数参数为变量和为指针的不同
首先运行fun(&y,&x)把y=2,x=1
传到void fun(int *x,int *y)
得到*x=2,*y=1 然后运行printf("%d%d",*x,*y); 在窗口中得到2 1
再运行*x=3,*y=4
传给主函数中fun(&y , &x) 得到y=3,x=4位置一一对应
再运行printf("%d%d",x,y);在窗口中得到4 3

所以运行结果为: 2 1 3 4

就是想证明函数参数为变量和为指针的不同,如果为指针,调用完之后在主函数中的实参之不变,但是若是指针实参就变了,本题目答案是
2 1 4 3

结果是:2 1 4 3
因为第一个fun(&y,&x),传递函数值是把1和2的地址传递给

*x,*y,就相当于此时的x是2,y的值是1;
*x=3; *y=4;这两句的意思是改的是主函数x等于4,主函数y等于3了,因为fun(&y,&x)把y的地址传递给了&x,把x的地址传递给了&y!

首先是实参与形参的问题,函数中引用的形参,*x,*y代表输入的第一个参数和第二个参数,你的传参顺序是&y,&x,当然输出2,1。并且将第一个参数负值为3,第二个为4。
然后是传地址的传参形式,函数直接访问了实际x,y变量,并修改了其中的值,所以,在输出x,y就变成了4,3。

首先:子函数(*变量) 调用 函数(&变量) 这样的形式是要带回返回值得
其次:此题在主函数里调用子函数的时候把x y故意颠倒下 这里考得应该是你对实参和形参的理解。对应如下:(调用时)
主 子 数值
y x 2
x y 1
看到这应该明白 子函数里显示的x y是子函数里的x y 当然是 2 1 了
然后再子函数里赋值 x = 3 y = 4 子函数结束,刚才说了 这样的形式是要带回返回值的,所以主函数里的x y 也跟着变化 输出主函数里的 x y 当然是
4 3了
所以结果应该是 ? 你自己说吧
祝你进步 在有疑问可以发信到 gabmyd@126.com 愿意为你解答!

输出的值是2 1 4 3
首先执行fun函数的printf语句,输出y和x的值:2 1
由于指针对x,y进行的是直接对内存地址上这个值的修改,所以在子函数当中不必return,回到主函数main当中,这两个值已经被修改,然后printf出:4 3