C/C++ code:
#include <stdio.h>
int main()
{
int i,j,*pmax,*pmin,*pt;//这里的"*"仅仅说明pmax pmin pt是指针变量。
printf("请输入两个数:");
scanf("%d%d",&i,&j);
pmax=&i;//这里是把指针pmax指向变量i的地址
pmin=&j;
if(*pmax<*pmin)//这里的"*"是个取内容运算符,取出地址pmax pmin对应的值(也就是变量i j的值)。
{
pt=pmax;
pmax=pmin;
pmin=pt;
}//指针变量pmax pmin交换地址
printf("最大值:%d, 最小值:%d\ni=%d,j=%d\ni地址:%d,j地址:%d\npmax:%d,pmin:%d\n",*pmax,*pmin,i,j,&i,&j,pmax,pmin);
getch();
return 0;
}
大家好,初学指针,有些地方比太明白,希望大家多多指教;
你理解得不错。
*pt=*pmax;
*pmax=*pmin;
*pmin=*pt;
这样就OK了
注释写的很明白了。
还有什么不明白的。
在格式化字符串中,地址值一般可以用%p来表示,这样输出的是一个十六进制的地址值,比%d来的更直观些,可读性也好一点
#include <stdio.h>
int main()
{
int i,j,*pmax,*pmin,*pt;//这里的"*"仅仅说明pmax pmin pt是指针变量。
printf("请输入两个数:");
scanf("%d%d",&i,&j);
pmax=&a