当参数*x=1, *y=1, *z=1时,函数add的返回值可能是( )?
int add(int add(int *x, int *y, int *z)
{
*x += *x;
*y += *x;
*z += *y;
return *z;
}
这道题考察关于指针指向的问题。
首先要清楚,我们一共定义了三个指针,也就是说他们指向的内容可能是不一样的也有可能是一样的。
于是就有以下几种情况。
1、三个指针 指向同一个地址,此时的情况:
首先*x=1+1; *y=2+2; *z=4+4;此时*z为8。
2、三个指针 指向各自的地址:
首先*x=1+1; *y=2+1; *z=3+1; 此时*z为4。
3、x和y指向一个地址 而z指向另一个:
首先*x=1+1; *y=2+2; *z=4+1; 此时*z为5。
4、x和z 指向同一地址 而y指向另一个:
首先*x=1+1; *y=2+1; *z=3+2; 此时*z为5。
5、y和z 指向同一地址 而x指向另一个:
首先*x=1+1; *y=2+1; *z=3+3; 此时*z为6。
也就是以上五种情况。西八,当时就是懵在了*x=1;*y=1;*z=1上了。
谢谢各位大佬看这题,刚刚初入c语言。请大佬们多多指教!!!