c++ 以后可以声明全局变量的大小吗?

idv4meu8  于 2023-03-20  发布在  其他
关注(0)|答案(3)|浏览(188)

假设我有这样一段代码:

#include <iostream>

int array[];

int main()
{
    int length;

    std::cin >> length;

    for (int i = 0; i < length; i++)
    {
        std::cin >> array[i];
    }
}

这不起作用,因为我没有在程序开始时声明数组的大小。然而,我不能声明数组的大小,因为数组的长度取决于用户输入,并且我只有在声明数组后才能得到这个输入。(我要求这个数组是一个全局变量,所以我不能在声明长度变量后声明它)

h7appiyu

h7appiyu1#

您需要声明指针使其成为动态的,以便在运行时分配长度。

#include <iostream>
int* array;
int main()
{
    int length;

    std::cin >> length;
    
    array = new int[length];
    
    for (int i = 0; i < length; i++)
    {
        std::cin >> array[i];
    }
}

使用后确保释放内存

delete[] array

或者,您可以使用向量,将处理大小和删除自动.

uqdfh47h

uqdfh47h2#

如果你真的想使用数组而不是一些stl容器,你可以使用malloc和char*:

#include <iostream>

int* array;

int main()
{
    int length;

    std::cin >> length;
    array = (int*)malloc(length*sizeof(int))

    for (int i = 0; i < length; i++)
    {
        std::cin >> array[i];
    }
}

这比C++更像C,但它确实有效。

uz75evzq

uz75evzq3#

您需要为此执行动态分配,然后释放分配

相关问题