数组的动态联编

  使用数组声明来创建数组时,将采用静态联编,即数组的长度在编译时设置。这个时候如果在括号里使用变量会报错,这样如果想输入数组长度以控制是做不到的:

  如果想创建一个数组,其长度让用户来输入管理,这个时候就需要用new[]运算符创建数组,采用动态联编(动态数组)。

静态联编:在编译时给数组分配内存被称为静态联编(static binding),意味着数组是在编译时加入到程序中的。

动态联编:使用new时,如果在运行阶段需要数组,则创建它;如果不需要,则不创建。还可以在程序运行时选择数组的长度。这被称为动态联编(dynamic binding),意味着数组是在程序运行时创建的。这种数组叫作动态数组(dynamic array)。

  使用静态联编时,必须在编写程序时指定数组的长度;使用动态联编时,程序将在运行时确定数组的长度。

  了解了这些特性,就可以在程序中这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;

int main()
{
int num;
cout << "Put in the number of people:__\b\b";
cin >> num;
//int Age[num];
int* p_Age = new int[num];
for (int i = 0; i < num; i++) {
cout << "p_Age[" << i << "] = ";
cin >> p_Age[i];
}

cout << "the age of every person is:" << endl;
for (int i = 0; i < num; i++) {
cout << "p_Age[" << i << "] = " << p_Age[i] << endl;
}

delete[] p_Age;

system("pause");
return 0;
}

  当输入10赋值给变量num时,接下来就会创建一个长度为10的数组以储存数据。

  当然采用这种方式创建数组的最后需要用delete[]来释放其占用的内存。