之所以要用到动态内存分配,是你一开始不知道要分配多大的内存空间,但最后要分配的时候一定是知道要分配多大的空间的,否则如果到最后要用到这个存储空间也就是你这里指的数组的时候,你都不知道要有多大的空间,那么动态分配内存也就没什么意义,还不如一开始就定一个足够大的数组。
这里举一个动态内存分配的简单应用例子,比如你是个酒店管理员,负责对接旅行团的入住管理,旅行团的人数都不一样,但最后真的有旅行团来的时候就会报出人数,这时候你就知道要分配多少个房间给他们,然后你要把这个旅行团的房间号记下来,这时候就可以用动态分配了,简单示例程序如下:
/*
*功能说明,录入房间号,输入第几个人(简单点模拟人名),查询房间号
*/
#include
#include
using namespace std;
#define MAX_HUMAN_COUNT 100 //最大可入住人数
int main()
{
int human_num = 0;//实际入住人数
int room_num = 0;//房间号
/*键盘获取人数*/
cout << "please input the num of people:";
cin >> human_num;
/*人数超乎范围退出*/
if(human_num <= 0 || human_num > MAX_HUMAN_COUNT)
{
cout << "invalid num !" << endl;
exit(0);
}
else
{
/*根据人数动态分配房间数,存储房间号*/
int *room = new int[human_num];
for(int i=0;i{
cout << "please input the room num:" ;
cin >> room[i];
}
/*输入第几个人,查询房间号*/
cout << "you can get the room num by input the index:1~" << human_num << ":";
cin >> room_num;
cout << "the room num of index " << room_num << " is " << room[human_num-1] << endl;
delete[] room;//最后注意一定要回收动态分配的内存
}
return 0;
}