gpt4 book ai didi

c++将指针传递给函数,用于将int数组传入和传出函数

转载 作者:行者123 更新时间:2023-11-30 02:03:03 25 4
gpt4 key购买 nike

我正在尝试传递一个 int 数组。下面是我想要做的一个例子。基本上,我可以编写一个函数,通过返回一个指针来返回一个 int 数组。现在我想获取该函数并将其用作另一个函数的参数。目标是让一个函数创建一个 int 数组,然后它进入另一个以 int 数组作为输入的函数。它不起作用。在接受 int * 指针的函数内部, int * 指针变成了 -8435432 并且在它被分配给另一个 int * 指针后无法读取它的元素。我不明白。为什么我可以从一个函数返回一个 int 数组,但它不能用作另一个函数的输入?

int * returnIntArray()
{
int * thePointer;
int j[3];
thePointer = j;

j[0] = 1;
j[1] = 3;
j[2] = -1;
return thePointer;
}

//
int * takesTheIntArray(int * anIntArray)
{
int x,y,z;
int * returnIt;
returnIt = anIntArray;
x = returnIt[0];
y = returnIt[1];
z = returnIt[3];
return returnIt;
}


int _tmain(int argc, _TCHAR* argv[])
{
int y,z,p;
int * x;
x = returnIntArray();
y = x[0];
z = x[1];
x = takesTheIntArray(returnIntArray());
cout << x[0] << ", " << x[1];
//cout << theVector[1];
cout << "hello";
}

最佳答案

int * thePointer;
int j[3];
thePointer = j;

应该是:

int* thePointer = new int[3];

第一个版本的问题是您返回的是静态分配的东西(分配在堆栈上)。当函数返回时,它将超出范围。在第二个版本中,它是动态分配的(在堆上分配)。完成后记得在指针上调用 delete[](否则会泄漏内存)。

关于c++将指针传递给函数,用于将int数组传入和传出函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12548683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com