c++中数组的参数大小

Parametrical size of an array in C++

本文关键字:参数 数组 c++      更新时间:2023-10-16

请不要草率地评判我,我只是一个用c++编程的新手然而,我的问题是下一个:为什么我们不能声明一个参数大小的数组,我们输入自己的参数?例如:

int mas[i*];
cin>>i*;

?

你可以这样做:

int i;
if ( !(std::cin >> i) )
    throw std::runtime_error("input failed");
std::vector<int> mas(i);

请注意,vector是在c++中编写运行时大小的数组的方式。c风格的数组主要是为了历史兼容性而存在的,应该避免使用。

在c++中,数组是类型为数组类型的对象,所有变量和所有表达式的类型(静态地)是程序的一部分,必须在编译时知道。换句话说,mas的类型必须在编译时已知。

在编译时创建类型未知的对象的唯一方法是使用arraynew -expression, new T[n],但即使在这种情况下,也没有该类型的:您可以从该表达式中恢复的唯一值是类型为T *的值,其中包含数组对象的第一个元素子对象的地址。

因为当您创建数组时,程序需要为其元素分配足够的内存。在您的示例中,在声明数组时,数组中的元素数量仍然未知。