c++中数组的参数大小
Parametrical size of an array in C++
请不要草率地评判我,我只是一个用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 *
的值,其中包含数组对象的第一个元素子对象的地址。
因为当您创建数组时,程序需要为其元素分配足够的内存。在您的示例中,在声明数组时,数组中的元素数量仍然未知。
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 为 NewObjectA() 函数创建 jvalues 的参数数组时出错 - JNI Invocation API
- 估计函数参数数组的维度
- 温度参数数组的内存泄漏
- 如何将值附加到命令行参数数组?
- libpqxx:如何绑定参数数组
- 如何在德尔福中C++参数数组指针算术
- C++函数参数或参数数组
- 将 std::function 代理为需要参数数组的 C 函数
- 分析字符串参数数组
- Pro*C传递参数数组
- OpenCV错误:cvGetSize中的错误参数(数组应该是CvMat或IplImage)
- c++无限参数数组
- 查找命令行参数数组中的元素数
- 如何将目录中所有具有完整路径的文件传递到execv中的参数数组
- ODBC:参数数组-忽略参数
- 使用lambda参数数组