看了神人对指针的解释。
又做了测试,看看指针能不能有返回值#include <stdio.h>
int compare(int *max,int *mid,int *min);//声明比较函数
void main()
{
int *x,*y,*z;//定义指针
int a,b,c;
a=81;b=75;c=91;
x=&a;//指针赋值
y=&b;
z=&c;
compare(x,y,z);//传递实参
printf("%d>%d>%d\n",*x,*y,*z);
}
int compare(int *max,int *mid,int *min)//定义比较函数
{
int *p;
if(*max<*min)
{
p=max;
max=min;//a和c比较,max为大数的地址,min为小数地址
min=p;
printf("%d,%d\n",*max,*min);
}
if(*max<*mid)
{
p=max;
max=mid;//大数和b比较,max为大数的地址,mid为小数地址
mid=p;
printf("%d,%d\n",*max,*mid);
}
if(*mid<*min)
{
p=mid;
mid=min;
min=p;
printf("%d,%d\n",*mid,*min);
} //两个小数比较,mid为次大数的地址,min为小数地址
printf("%d,%d,%d\n",*max,*mid,*min);
return(max,mid,min);
}
调试后有个警告
运行以后结果不变
是不是可以这样理解呢?
max、mid、min三个指针里的地址虽都已经指向了大、中、小数的地址,但它们是局部的指针变量。对于x、y、z三个指针变量没有任何影响。
即指针变量做为实参传递给形参,也仅是一个值的引用,不会对指针变量实参有返回值和影响。
|