#include<iostream>
using namespace std;
void fun(int a,int b,int c,int *max,int *min);
int main()
{
int a,b,c;
int *p,*q;
cin>>a>>b>>c;
fun(a,b,c,p,q);
cout<<"max="<<*p<<","<<"min="<<*q<<endl;
return 0;
}
void fun(int a,int b,int c,int *max,int *min)
{
*max=a;
*min=a;
if(b>*max)
*max=b;
if(c>*max)
*max=c;
if(b<*min)
*max=b;
if(c<*min)
*min=c;
}
检查是0 error,但运行时一输入三个数字就显示内存不能为written,到底是哪里出错了?
非常感谢,但是我还是不明白为什么我没有初始化指针就不能用到函数中呢,我把它们定义成空指针也不行,主函数和fun函数形参实参到底是怎么传递的呢
追答形参实参之间的指针传递是通过实参的地址来传递的。
举个不太恰当的例子,比如说,送快递。如果你告诉快递员你的收件地址,快递员就会把物品送到指定地点并把物品给你,然后回去交差。如果你没告诉快递员你的收件地址,则快递员就不知道将物品送到哪里,只能随便找个地方转悠一圈,然后回去交差,物品也被快递公司回收了。
指针实参形参之间的传递跟上面的快递差不多。实参就是你,形参就是快递员。如果实参指针没有初始化或者未NULL,就等于实参指针没有指向具体的地址,则形参不知道将数据写到哪个地址上。