看来你的c语言中的函数功底要加強一下了说笑的!!!
在函数里调用另一个函数fun,要使用指针的方式才能改变它的值如fun(int *x, int *y);
如果不使用指针而直接值传递调用,那么在调鼡完fun函数后该函数做占用的内存、堆栈都会被释放,即a、b的值还是以前的不会被改变;
使用指针的话,它会直接修改指针所指向的内存的值(const除外)从而达到交换的目的。
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了
void fun(*intxinty)没有返回值 所以只能用指针的才能改变变量值 ;
调用函数是单向傳递 但是子函数可以有返回值 没有的或者不止一个就用指针返回