虽然前面讲过的用new给基本类型和对象在运行时分配内存,但它们的尺寸在编译时就已经确定下来——因为我们为之申请内存的数据类型在程序中有明确的定义,有明确的单位长度。
但有些时候,必须等到程序运行时才能确定需要申请多少内存,甚至还需要根据程序的运行情况追加申请更多的内存。
例如: int *x = new int[10];//x表示整型数组的数组名
实例:动态数组
1 #include <iostream>
2 #include <string>
3 //让new函数申请内存并返回一个指向内存块的指针
4 using namespace std;
5 int main()
6 {
7 unsigned int count = 0;
8
9 cout << "请输入数组的元素个数:\n";
10 cin >> count;
11
12 int *x = new int[count];//在程序运行时才申请内存,内存块指针指向x
13 for(int i=0;i<count;i++)
14 {
15 x[i] = i;
16 }
17 for(int i=0;i<count;i++)
18 {
19 cout << "x[" <<i << "]的值是:" << x[i] << "\n";
20 }
21
22 return 0;
23 }