全部问题 > 当前问题

请问fun(p,q)传入函数的到底是什么?

是指针p和q的地址吧?


*p和*q才是地址的值吧?

火股 2016-3-19 14:33:51

共 2 个回答

嘿嘿大人 2016-3-23 12:45:49

p和q是地址,在定义的时候星号只是说明符号,其他时候*是间址符号,所以调用的时候不用加星号

火股 2016-3-26 14:56:44

回复 嘿嘿大人:fun(p,q)后,指向交换,为什么输出还是3,5呢?

问题来自: 指针和函数
有以下程序
#include <stdio.h>
void fun( int *a,int *b)
{ int *c;
  c=a;a=b;b=c;
}
main()
{ int x=3, y=5, *p=&x, *q=&y;
  fun(p,q); printf("%d,%d,",*p,*q);
  fun(&x,&y); printf("%d,%d\n",*p,*q);
}
程序运行后输出的结果是 ______ 。
A. 3,5,5,3
B. 3,5,3,5
C. 5,3,3,5
D. 5,3,5,3
答案:B
解析:fun函数仅仅时改变了参数a和b的指向,并没有改变它们所指向变量的值。所以fun(&amp;x, &amp;y)中x、y不受影响。由于函数参数的传递原理是赋值,所以在fun(p,q)中,a、b的互换对p、q也没有影响。因此选B。