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

如何用指针返回多个值

2012-02-11 
怎么用指针返回多个值#include iostream#include conio.husingnamespacestdintb(int*a[2]){inthp100

怎么用指针返回多个值
#include <iostream>  
        #include <conio.h>
      using   namespace   std;
    int   b(int*   a[2])
    {int   hp=100,mp=10;
    a[0]=&hp;a[1]=&mp;
            }
    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]=&mp;
}
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;输出不定。


指针返回多个值---》指针数组了,具体看实现
[解决办法]
请注意:
一定不能返回指向函数局部变量的指针!

热点排行