C语言中,为什么有的输出结果主函数的值不变啊,我有点迷

1以下程序的输出结果( )
void fun(*intx,inty)
{x=x+y;y=x-y;x=x-y;
prinf("%d ,%d" ,x, y};
main()
{int x=2,y=3;
fun(x,y);
print("%d %d\n",x,y);
}
答案是3223.我想知道什么情况下主函数结果不被改变,要是这样,除了用指针,主函数的值永远都不会被改变了,但是有的题调用函数却能利用上,
func(inta,intb)
{return a+b;}
main()
{int x=6,y=7,z;
z=func(func(x++,y++),func(--x,--y));
printf("%d",z);}
这个调用函数不就利用上了,为什么啊···照单向传递调用函数岂不是没用?

看来你的C语言功底要加强一下了,说笑的!!!
在函数里调用另一个函数fun,要使用指针的方式才能改变它的值,如fun(int *x, int *y);
如果不使用指针而直接值传递调用,那么在调用完fun函数后,该函数做占用的内存、堆栈都会被释放,即a、b的值还是以前的,不会被改变;
使用指针的话,它会直接修改指针所指向的内存的值(const除外),从而达到交换的目的。追问

请问,
func(inta,intb)
{return (a++)+(b++);}
main()
{int x=6,y=7,z;
z=func(func(x,y),func(x,y));
printf("%d",z);}
可求出z,但是x,y不会变,对吧?(我自己在原题修改的,可能不太对,大概是这个意思)

追答

z的结果是26;
我来给你解释下:
z=func(func(x,y),func(x,y));
一共调用3次,前2次是要求出那个fun(int a,intb)里的a和b的值,能理解吧;假设第一次求a值,即a = fun(x, y),由于不是指针的方式(看上面回答说明),a的结果就为13,没有问题吧,你在fun函数里返回的是(a++ + b++);但是在调用完后,并没有改变x、y的值,还是6和7;
接着求b的值,就和a一样了,也是13;
那么z就为26了

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言中,为什么有的输出结果主函数的值不变啊,我有点迷
看来你的C语言功底要加强一下了,说笑的!!!在函数里调用另一个函数fun,要使用指针的方式才能改变它的值,如fun(int *x, int *y);如果不使用指针而直接值传递调用,那么在调用完fun函数后,该函数做占用的内存、堆栈都会被释放,即a、b的值还是以前的,不会被改变;使用指针的话,它会直接...

c语言以下程序后的输出结果是 3223为什么
x=x-y后x=3,y=2;所以fun里的输出printf32 接下去应为是局部变量所以x,y的值都没有变 所以printf输出23 整个就是3223 (贰)fac=fac\/i 例如 1\/3!=(1\/2!)\/3 呵呵,如果还有什么问题找我 QQ:381330213

c语言问题,急救!
但是K=2这是你自定义的.而最后输出的是n[2]的值,n[2]的值是0,也是你自定义的.for(i=0;i<k;i++) n[i]=n[i]+1;这个循环只循环了当i=0,i=1两次.而当i=2时,条件不满足,循环已经退出了.所以输出的结果是0

C语言输出
printf("%c\\n",*p); } 结果是:a 实际上是将数组b的首地址传递给了形参p,形参p加3后,使其指向数组中的第4个元素 但是主函数中的指针变量p的指向并没有发生变化,仍指向b的首地址

c语言,函数,解释清楚点啊
D fun函数迷惑人,定义了一个全局变量d,但函数内使用的是局部变量d=5,所以主函数 只有一句话:d+=a++;,运行后d为4,a为4, 打印d的值肯定是4了

C语言若一下程序段的输出结果是
c。。。这是传参数的问题。传参数分为传值引用和传地址引用。传值引用意思就是形参和实参之间。只是只相等。比如 int a=1,b=2。 fun(int x,int y)。调用 fun(a,b)这就是传值引用,传值引用后,在fun的函数内部无论你对x,y怎么赋值,它是不会改变外部a b的值得,仅仅是把一个数据...

C语言中scanf()的迷惑
不是这个原因。原因是 当scanf的是%c的时候就会直接从输入缓冲区读入(如果缓存区不为空)当scanf的是%f,%d的时候会跳过一切空白字符(空白字符有空格,tab,回车符,换行符好像还有一些),从非空白字符读入。

c语言题库中的一道题有点疑问
传地址,是实参将自身存储的位置给形式参数,本质上它们访问的是同一个存储单元,所以形式参数的改变会影响实参的值。本题传递的是结构体,结构体名代表的是地址,所以该函数传递的是地址。所以f函数中对t的值得赋予改变了主函数中a的值。最后输出的结果就是运行结果了。

该c语言程序的输出结果为Ab,如何理解
p1=&c1;\/\/p1指向的是c1 p2=&c2;\/\/p2指向的是c2 fun(p1,p2);\/\/这里传的是p1,p2。并不是c1,c2,接下来看函数里的 printf("%c%c\\n",c1,c2);\/\/所以,此时c1的内容并没有改变,c2自增了1,所以结果就是Ab } void fun(char *a,char*b)\/\/这里的a指向的是p1,b指向的是p2 {a=b...

C语言中void函数为什么没有返回值也能运算
指针时特别注意。本例子中函数void jsValue(int m,int k,int xx[])的三个参数是m、k、xx,函数里面无论对这三个数如何改变,函数返回后三个数还是调用前的值,这句话对于m和k很好理解,对于xx而言,其值是指向的某块内存,注重点是指向,这个指向是不会改变的,但是指向的内容被改变了。

相似回答