在函数中分配指向数组的指针

时间:2018-11-26 06:58:46

标签: c++ arrays function pointers

因此向我介绍了这段代码,并且我大部分都准备好了,直到应该为数组分配指针为止。分配的目的是要进行程序打印输出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

2 个答案:

答案 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];