C++如何使用在子程序中创建的指针
C++ how to use a pointer which has been created in a subroutine
或夫人,
在 C++ 中,我正在考虑使用一个子例程来定义我在主体中首先声明的所有指针。我知道这可以通过每次使用 return 一个指针的函数来完成。因此,我仍然想在子程序中进行。我用谷歌搜索了很多,还没有找到答案。感谢您的帮助。
示例 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可以使用。
非常感谢。
指针需要通过引用传递,否则你只是在更改该指针的本地副本。
void testsub(int*& k3d)
您还需要在 cout
语句之后调用 delete[]
,以避免内存泄漏:
delete [] i3d;
或者,您可以 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 来保存整数集合。在这种情况下,您也不必担心内存 allocations/deallocations。
#include <vector>
#include <iostream>
int main()
{
std::vector<int> i3d(10);
std::cout << "test 1 " << i3d[0] << std::endl;
return 0;
}
或夫人, 在 C++ 中,我正在考虑使用一个子例程来定义我在主体中首先声明的所有指针。我知道这可以通过每次使用 return 一个指针的函数来完成。因此,我仍然想在子程序中进行。我用谷歌搜索了很多,还没有找到答案。感谢您的帮助。 示例 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可以使用。 非常感谢。
指针需要通过引用传递,否则你只是在更改该指针的本地副本。
void testsub(int*& k3d)
您还需要在 cout
语句之后调用 delete[]
,以避免内存泄漏:
delete [] i3d;
或者,您可以 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 来保存整数集合。在这种情况下,您也不必担心内存 allocations/deallocations。
#include <vector>
#include <iostream>
int main()
{
std::vector<int> i3d(10);
std::cout << "test 1 " << i3d[0] << std::endl;
return 0;
}