有以下程序: #include void fun(int*p,int*q); main() { int m=1,n=2,*r=&m; fun(r,&n); printf(’’%d,%d’’,m,n); } void fun(int*P,int*q) { P

admin2020-10-26  29

问题 有以下程序:
#include
void fun(int*p,int*q);
main()
{
int m=1,n=2,*r=&m;
fun(r,&n);
printf(’’%d,%d’’,m,n);
}
void fun(int*P,int*q)
{
P=p+1;
*q=*q*5;
}
程序运行后的输出结果是(  )。

选项 A、1,5
B、1,10
C、2,5
D、2,10

答案B

解析 函数是地址传递,所以子函数中的变化会反映到主函数中的变量上,但要注意的是,在指针引用时必须在前面加上*,否则操作的是地址本身,而不是其指向的变量的值,因此p=p+1会将p指向下一个整型地址,*q=*q*5会操作n的值,m的值没有变化,所以结果是1,10。
转载请注明原文地址:https://kaotiyun.com/show/wt3p777K
0

最新回复(0)