有以下程序 #include<stdio.h> void swap(int*a,int*b) {int t,*tp; t=*a;*a=*b;*b=t; tp=a;a=b;b=tp; printf("%d,%d,",*a,*b); } main() {int

admin2020-10-26  25

问题 有以下程序
#include<stdio.h>
void swap(int*a,int*b)
{int t,*tp;
t=*a;*a=*b;*b=t;
tp=a;a=b;b=tp;
printf("%d,%d,",*a,*b);
}
main()
{int i=3,j=7,*p=&i,*q=&j;
swap(p,q);
printf("%d,%d,%d,%d",i,j,*p,*q);
}
程序执行后的输出结果是(    )。

选项 A、3,7,3,7,3,7
B、7,3,7,3,7,3
C、3,7,3,7,7,3
D、3,7,7,3,7,3

答案D

解析 main()函数中,首先定义两个整型变量i和j,初值为3和7,并将i的地址赋给p,j的地址赋给q,传给swap()函数,swap()函数接收两个整型指针变量a,b,然后使用整型变量t交换a、b所指向的值并输出,通过指针变量,这次交换改变丫实参i、j的值,使得i=7,j=3;指针变量tp交换a和b的值,由于a、b的值是p,q值的拷贝,所以这次交换只改变了形参a,b的值,对实参p,q的值没有改变,所以此时a指向i,b指向i,函数最后输出*a和*b,所以输出3,7;由于swap()函数改变了p和q指向的值,但未改变p,q的值,所以main()函数输出i的值为7,j的值为3,*p的值为i,*q的值为j,所以程序输出:3,7,7,3,7,3,本题答案为D。
转载请注明原文地址:https://jikaoti.com/ti/eiD0FFFM
0

最新回复(0)