或太太, 在C ++中,我正在考虑使用子例程来定义我在主体中首先声明的所有指针。我知道可以通过使用函数每次返回一个指针来完成。因此,我仍然希望在子程序中执行此操作。我google了很多,还没找到答案。非常感谢您的帮助。 示例c ++代码如下:
#include <iostream>
using namespace std;
void testsub(int* k3d)
{
k3d= new int [10];
cout<<"test 0 "<<k3d[0]<<endl;
}
int main ()
{
int* i3d=0;
testsub(i3d);
cout<<"test 1 "<<i3d[0]<<endl;
}
我希望在子程序中定义了伪指针k3d后,可以使用主体中的i3d。 非常感谢提前。
答案 0 :(得分:8)
指针需要通过引用传入,否则你只需更改该指针的本地副本。
void testsub(int*& k3d)
此外,您需要在delete[]
语句后调用cout
,以避免内存泄漏:
delete [] i3d;
答案 1 :(得分:1)
或者,您可以return
来自子例程的指针。
#include <iostream>
int* testsub()
{
int* ptr = new int[10];
std::cout << "test 0 " << ptr[0] << std::endl;
return ptr;
}
int main()
{
int *i3d = testsub();
cout << "test 1 " << i3d[0] << endl;
delete[] i3d;
return 0;
}
或使用std::vector来保存整数集合。在这种情况下,您也不必担心内存分配/解除分配。
#include <vector>
#include <iostream>
int main()
{
std::vector<int> i3d(10);
std::cout << "test 1 " << i3d[0] << std::endl;
return 0;
}