本帖最后由 龚强97 于 2016-2-12 15:57 编辑
#include<stdio.h>
int *max(int *m,int *n)
{ if(*m>*n)
return m;
else return n;
}
int main()
{ int p,a,b;
printf("Enter two digits: ");
scanf("%d%d",&a,&b);
p=*max(&a,&b);
printf ("\n%d",p);
return 0;
}
这个程序我们称它为程序一,作用是显示你输入的两个数中的较大的的数。现在把主函数里的int p,a,b; p=*max(&a,&b);分别改为int *p,a,b; p=max(&a,&b)并称之为程序二, 运行后效果是显示你输入的两个数中较大的那个数的地址。那么问题来了 子函数到底叫什么,是叫max 还是*max? 我的理解是 子函数的名称是max,在程序一中 假设输入的a>b,那么max函数返回了m,然后p=*max(&a,&b); 即p=*m 显示了较大的那个数。在程序二中 int *p,a,b; p=max(&a,&b);max返回m,p=m,显示较大数的地址。那么问题来了,子函数的名称为max的话, 把int *max(int *m,int *n)修改为int max(int *m,int *n)其余不变为什么提示编译不成功?假如子函数名称为 *max 那么程序二中的p=max(&a,&b)又是什么鬼啊。。。。小白今天才接触到指针,被书上的例子绕晕了。。。。。。。 |