因此向我介绍了这段代码,并且我大部分都准备好了,直到应该为数组分配指针为止。分配的目的是要进行程序打印输出100 99 98 3 21。因此在我看来,函数f无效,所以我删除了它。我的问题是如何在函数中将指针分配给数组?我还以为返回数组可以用,但是没有用。预先感谢
#include <iostream>
using namespace std;
int* nochange(int* p)
{
return p;
}
int* getPtrToArray(int& m)
{
int anArray[100];
for (int j = 0; j < 100; j++)
anArray[j] = 100-j;
m = 100;
return nochange(anArray);
}
void f()
{
int junk[100];
for (int k = 0; k < 100; k++)
junk[k] = 123400000 + k;
junk[50]++;
}
int main()
{
int n;
int* ptr = getPtrToArray(n);
f();
for (int i = 0; i < 3; i++)
cout << ptr[i] << ' ';
for (int i = n-3; i < n; i++)
cout << ptr[i] << ' ';
cout << endl;
}c
答案 0 :(得分:2)
您可以像这样从函数返回指针:
data:
但这是一种不好的风格:在一个地方分配内存,在另一个地方释放内存。
更好地将指向数组的指针转移到函数中,如下所示:
connect-src * data: ws: wss:;
更现代的方法涉及使用向量:
int* getPtrToArray(int& m)
{
int *anArray = new int[100];
for(int j = 0; j < 100; j++)
anArray[j] = 100 - j;
m = 100;
return anArray;
}
int main()
{
int n = 0;
int* ptr = getPtrToArray(n);
for(int i = 0; i < 3; i++)
cout << ptr[i] << ' ';
for(int i = n - 3; i < n; i++)
cout << ptr[i] << ' ';
cout << endl;
delete []ptr; // you should free memory here
}
答案 1 :(得分:0)
anArray对于getPtrToArray函数来说是本地的,因此生存期和可见性仅对于getPtrToArray函数而言。 将其定义为静态数组将延长其在程序范围内的寿命。
static int anArray [100];