如果我要打印带有single dimensional array
个元素的n
。我可以将array
初始化为array[n]
吗?
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
int n;
std::cout << "Please enter the number of elements (n): ";
std::cin >> n;
int array[n];
for (int i = 0; i <= n; i++) {
std::cin >> array[n];
}
return 0;
}
答案 0 :(得分:2)
由于C ++不支持与C99相反的可变长度数组(VLA),因此您必须使用其他方式在C ++中分配任意大小的内存,例如std::vector
:
#include <iostream>
int main()
{
int n;
std::cout << "Please enter the number of elements (n): ";
std::cin >> n;
std::vector<int> foo(n);
// valid indexes range form 0 to size - 1: < n instead of <= n
for (int i = 0; i < n; ++i)
std::cin >> foo[i];
}
还要在i
循环中混合n
和for
。
std::cin >> array[n] << " "; ^^^^^^
也不起作用。
答案 1 :(得分:1)
在C ++中,您不能初始化具有可变长度的数组。要么你:
动态分配内存
int *array = new int[n];
在这种情况下,您不应忘记稍后使用
进行分配 delete[] array;
或者您可以使用std::vector
std::vector<int> array(n);
在退出范围时将被释放。
其他错误是:
for
循环应类似于
for (int i = 0; i < n; i++)
因为有n个元素,所以数组索引从0到n-1。
要阅读输入内容,您只需使用
std::cin >> array[n]
您使用>>
和<<
组合编写的代码无法正常工作。