#include<stdio.h> void f(int y,int *x) { y=y+*x; *x=*x+y; } main() { int x=2,y=4; f(y,&x);

printf(“%d %d\n",x,y);}我想知道为什么这个题目的结果是8和4?求详解!

第1个回答  2011-03-20
X是地址传递,子函数会修改X的内容;而Y是按值传递,子函数不会修改Y的值。结果自然是X=8.Y=4.要是还不懂,翻书去。本回答被提问者采纳
第2个回答  2020-06-10
y=y+*x=4+2=6;*x=*x+y=6+2=8
所以输出x等于8,y不变输出4

#include<stdio.h> void f(int y,int *x) { y=y+*x; *x=*x+y; } m...
X是地址传递,子函数会修改X的内容;而Y是按值传递,子函数不会修改Y的值。结果自然是X=8.Y=4.要是还不懂,翻书去。

C语言程序执行问题
不是定义了函数f吗?这时候参数y和x传递给函数,执行{y=y+*x,*x=*x+y;},其中涉及逗号运算,先解释一下:逗号运算符。用它将两个表达式连接起来。如 3+5,6+8 称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为 表达式1,表达式2 逗号表达式的求解过程是:先求解表达式1,再...

void f( int y,int *x) {y=y+*x; *x=*x+y;} main( ) { int x=2,y=4...
在c语言中,被调函数不能直接修改主调函数中变量的值,而要让函数可以修改主调函数的变量,则被调函数需要将参数声明为指针类型,调用者需向被调用的函数传递变量的地址,所以,f()中x是声明为指针类型,调用的时候也是给x传递地址,所x能修改主函数中的值,而y传的是值,自然不能,这就是值传递...

void f(int y,int*x) {y=y+*x; *x=*x+y;} void main(
void f(int y, int *x) { y = y + *x;\/\/ 形参y,x和实参y,x存储地址不同,改变形参的值对实参没有影响。\/\/ y=y+x=6 x = *x + y;\/\/ *x的值就是主函数里实参x的值 \/\/ *x=2+4=6 } void main() { int x = 2, y = 4;f(y, &x);\/\/ f()函数中只改变了x的...

fun(int x,int y,int z){z=x*x+y*y;}main(){int a=31;fun(5,2,a);p...
。c++可以通过引用,也就是别名来改变, 比如把函数定义成 void fun(int,int,int &)这样在函数里,对第三个参数做改变,相应的实参也会改变,因为它们是同一个。 这就是引用类型的作用。也可以通过指针所指来修改地址值 也就是 void fun (int ,int int * )...

在c++6.0中这两句话是什么意思y=y+*x; *x=*x+y
x是一个指针,可能是指向整型的也可能是指向浮点数的。y=y+*x; \/\/y的新值为原来的y加上x所指的数值,x=*x+y; \/\/x所指的数值更新为原来的数值加上y现在的值。

...x=x+y;y=x-y;x=x-y; printf("%d,%d,",x,y); } main() {int x=2...
main是主函数,所以程序先从main函数执行。main函数中,调用fun(x,y);x,y是形参,值分别为2,3.转入执行fun()函数,x,y被重新赋值了,x=2+3=5,y=5-3=2,x=5-2=3 接着输出xy的值,所以为3,2。因为x,y不是地址传递,所以在main函数中的x,y没有变化 所以main函数中输出的值为...

...printf("%d,%d,",x,y); } main() {int x=2,y=3; fun(x,y); pri...
void fun(int x,int y)\/\/ 由于这里传入参数不是指针,引用,所以这里x,y只是main函数中x,y值的一个拷贝,所以修改后不会对main中x,y的值有影响。{x=x+y;y=x-y;x=x-y;printf("%d,%d,",x,y);} \/\/ 这里输出:3,2,main(){ int x=2,y=3;fun(x,y);\/ printf("%d,%d\\n"...

#include<stdio.h> void main() { int x=1,y; y=++x*++x; printf("%d...
1。i-- i 参与运算后,i 的值再自减 1。解答问题:x=1为初始化值.y=++x * ++x;第一个++x, x=2;第二个++x, x=3; 同样道理 第一个++x 也=3; 因为x的内存地址不变.第二个++x加了1后=3.第一个++x也会改变自身的值.所以:结果=9 在visual C++6.0编译后结果=9 ...

...h> void f(int x,int y) {int t; t=x;x=y;y=t; } main() {int a...
因为这里你传到f()里的是a,b的值,在f()里x,y是局部变量,函数运行结束就释放了,你要改变值则应该传地址

相似回答