gpt4 book ai didi

c++ - 在函数、编译时或运行时创建的数组?

转载 作者:行者123 更新时间:2023-11-27 23:45:58 26 4
gpt4 key购买 nike

当我们在堆栈上创建一个数组时,大多数编译器都想知道数组的大小,这将在编译时确定,所以通常我们不能让用户从标准输入中输入数组的大小,但是如果我们调用函数并将用户输入的数字传递给函数以创建数组,会怎样?

这个函数不是在编译时调用的吗?

例如,如果用户输入 1,这个函数是否会在运行时被调用?由于用户将决定是否调用该函数。

还是这仍然是编译时间?

#include <iostream>

void someFunction(int number){

int sampleArray[number];

for(int i = 0; i < number; i++){

sampleArray[i] = 0;
}
// I know what I'm doing is pointless but is it possible?
}

int main()
{
int number = 0;
int choice = 0;

std::cout << "do you want to create an array? press 1 for yes" << std::endl;
std::cin >> choice;
if(choice == 1){

std::cout << "enter size" << std::endl;
std::cin >> number;

someFunction(number);

}
}

最佳答案

您使用的是可变长度数组。它不是 C++ 标准的一部分,但一些编译器支持它作为扩展。

为了使您的代码符合标准,请不要使用它。使用 std::vector<int>相反。

std::vector<int> someFunction(int number){

std::vector<int> sampleArray(number);

// No need for this. sampleArray elements are zero initialized.
/*
for(int i = 0; i < number; i++){
sampleArray[i] = 0;
}
*/
return sampleArray;
}

关于c++ - 在函数、编译时或运行时创建的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50573519/

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