首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

指针函数调用有关问题

2012-06-11 
指针函数调用问题#include iostreamusing namespace stdint *max(int a,int b,int c,int *p){if (ab &

指针函数调用问题
#include <iostream> 
using namespace std;

int *max(int a,int b,int c,int *p) 
{
   
  if (a>b && a>c) 
  {p=&a;} 
  else if (b>a && b>c)
  {p=&b;} 
  else if (c>a && c>b) 
  {p=&c;} 
  return p; //这个函数返回指向最大数的指针


int main()
{
  int x,y,z,m;
  int *q;  
  cin>>x>>y>>z;
  m=*(max(x,y,z,q)); 
  cout<<m<<endl; //输出x,y,z中最大值
  cout<<q<<endl; //输出指针q的内容
  cout<<&x<<endl; //输出x的地址
  system("pause") ;
  return 0;


运行的时候,我输入3 2 1,依次赋给x y z。问题是:
输出的 q 的内容与 x 的地址不一样,这是为什么啊?指针 q 不就是存的三个数字中的最大值 x 的地址么??
想不通………………求解
   


[解决办法]
返回局部变量的地址,你想干什么?
[解决办法]
形参a,b,c作为临时变量,你居然还把指针p指向了这个临时变量。函数结束后,这个指针就没有用了,你想怎么办呢?
[解决办法]

C/C++ code
#include <iostream>using namespace std;int* max(int *pa, int *pb, int *pc, int** pq){    int* pmax = *pa > *pb ? pa : pb;     return *pq = *pmax > *pc ? pmax : pc; }int main(){    int x, y, z, m, *q;    cin >> x >> y>> z;    m = *(max(&x, &y, &z, &q));    cout << m << endl;    cout << q << endl;    cout << &x << endl;}
[解决办法]
指针p就相当于引用了,你还return他干嘛,多此一举

热点排行