计算机二级c语言,请解答

这个双重指针是怎么用的啊,为什么最后值都换了,有没有人解答一下双重指针是什么啊,不会啊

img

img

首先,主函数中先定义了整形变量i,j并分别赋初始值3,5,再定义了指针p,q,并分别将i,j的值赋值给p,q,最后定义了一个指针r。而前面的f函数是一个指针函数,其要求是输入两个实参指针带入到函数中的两个形参进行运算。显然,f函数的作用就是判断大小然后交换值。这道题的主要考点就是关于指针的应用,要注意在函数中,改变指针的值,实际上相当于改变该指针所对应变量的值。也就是说,在函数f中交换了s和t的值改变的是指针s和t(也就是p和q)所对应的变量i和j的值。所以此时的i=5,j=3,而i,j所对应的指针p=i=5,q=j=3。而后面r=*s=*p=i=5。所以选D

你图片中的图文解析不是已经解释的很清楚了,你还有哪里不明白的?

主函数中p指针指向i的地址,q指针指向j的地址.
把pq指向的地址传给f函数中的s和t指针
f函数中的s指针就也指向了i的地址,t指针就也指向了j的地址
也就是*s, *pi访问的是同一个地址,修改其中一个的值另外两个也会一起改变.
*t, *q和j访问的也是同一个地址,同样修改其中一个的值另外两个也会一起改变.

这样子在f函数中交换*s和*t指向地址的值,就相当于在改变主函数中*p和*q的值,
因为他们的地址是一样的,同时也就改变了i和j的值.

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

而且这个题目也没有用到双重指针,这个还是单指针,指向指针的一个指针才叫双重指针,类型表示是这样的**两个星号。