有以下程序: #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,

admin2018-01-14  17

问题 有以下程序:
   #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

解析 在C语言中函数参数传递的功能是“传值”,即形参和实参是两个没有关系的变量。本题函数的形参虽然为指针变量,但是函数内部交换的是地址值,而不是地址值所指向的函数值,所以不会传递给实参,因此交换函数并没有交换p、q所指向的值。
转载请注明原文地址:https://jikaoti.com/ti/ZSa0FFFM
0

最新回复(0)