怎么用指针返回多个值
#include <iostream>
#include <conio.h>
using namespace std;
int b(int* a[2])
{int hp=100,mp=10;
a[0]=&hp;a[1]=∓
}
main()
{int* a[2];
b(a);
cout < <*a[0] < <endl;
cout < <*a[1] < <endl;
getch();
}
结果为什么不是100,10啊,还有怎么用指针返回多个值啊?请告诉我.
[解决办法]
局部变量是在运行栈中自动分配的,函数退出后就没有意义了,所以返回指向它的指针也就成了悬空指针
返回多个值可以在函数内用new在堆上分配一块内存,保存好结果后返回该指针,但得记得释放这块内存区域
也可以在函数外分配一块内存(局部,全句,动态的都可以),然后把指针传给函数,在被调用函数里面修改指针所指的内容
[解决办法]
改成这样就可以了
#include <iostream>
#include <conio.h>
using namespace std;
int hp=100,mp=10;
int b(int* a[2])
{
a[0]=&hp;a[1]=∓
}
main()
{int* a[2];
b(a);
cout < <*a[0] < <endl;
cout < <*a[1] < <endl;
getch();
}
原代码 hp,mp为局部变量,b(a)运行后,就会被系统释放,所以cout < <*a[0] < <endl;
cout < <*a[1] < <endl;输出不定。
指针返回多个值---》指针数组了,具体看实现
[解决办法]
请注意:
一定不能返回指向函数局部变量的指针!