若不知道数据的多少,如何定义数组长度
时间: 2024-03-23 16:41:41 浏览: 83
在C++中,定义数组时需要明确指定数组的长度,否则编译器会报错。但是如果不知道数据的个数,可以通过动态内存分配来解决这个问题。
动态内存分配是通过`new`和`delete`运算符来实现的,它们可以在程序运行时根据需要动态地分配和释放内存。可以使用`new`运算符来分配一个动态数组,语法如下:
```c++
int* arr = new int[n];
```
其中,`n`表示数组的长度。使用这种方式定义的数组,可以在程序运行时根据需要动态地调整长度。如果需要释放这个数组,可以使用`delete`运算符,语法如下:
```c++
delete[] arr;
```
其中,`arr`表示要释放的数组名称,需要在数组名称后面加上`[]`。
下面是一个示例程序,演示了如何使用动态内存分配来定义一个数组,并对数组进行赋值和输出:
```c++
#include <iostream>
using namespace std;
int main() {
int* arr;
int n = 10; // 假设数组最大长度为10
arr = new int[n];
// 对数组进行赋值
int i = 0;
while (cin >> arr[i]) {
i++;
if (i == n) {
// 如果数组已满,则动态扩展数组的长度
n += 10;
int* temp = new int[n];
for (int j = 0; j < i; j++) {
temp[j] = arr[j];
}
delete[] arr;
arr = temp;
}
}
// 输出数组的内容
for (int j = 0; j < i; j++) {
cout << arr[j] << " ";
}
cout << endl;
delete[] arr;
return 0;
}
```
这个程序会从标准输入中读入一组数据,动态地将它们存入一个数组中,并在数组已满时动态扩展数组的长度。最后输出数组中的所有数据。
阅读全文