C语言题 帮帮忙 为什么选A

2025-05-19 08:55:34
推荐回答(4个)
回答(1):

void sub (int *, int *);
函数中的参数为整形指针,指针这东西你学过了没有?
int a = 100;
int *x = &a; 那么 *x 就等价于 a; *x 就是 a ;
不要问这个为什么,请看看书,指针的那部分。
这样的话当你调用函数的时候 sub (&x, &y);
把x 和 y 的地址赋给了形参。
void sub( int *px , int *py)
*px 就是 x , *py 就是y;
所以当你赋值的时候, *px=10; *py=20; 其实就等价于 x = 10; y = 20; 注意是 主函数中的x 和y。你改变的是主函数中的 x 和 y 的值。
所以当你printf x 和 y 的时候, 他们的值就是 10 20

回答(2):

地址传递。sub函数的两个参数加了“&”这个意思就是变量的地址。然后函数接收时的两个参数是指针,这样px和py就指向了x和y。修改px和py的值就等于修改x和y,所以选A

回答(3):

你可以这么理解:
把main()中:sub(&x,&y)这一句其实就是:x = 10和y = 20;
类似于重新给x和y赋了一次值;

回答(4):

因为它取的是函数sub的地址。。。地址x,y的值是10,20。。。