如何用new.分配一个动态数组?

来源:百度知道 编辑:UC知道 时间:2024/05/14 16:48:19
我的意思是,让用户自定义数组的大小,
另外,怎么理解这个动态数组?
书上给个例子.
main()
{
int *p;
p=new int;
*p=20;
cout<<*p;
delete *p;
return 0;
}
哪里有动态了?

int *p;
p=new int;
delete *p;

这里就是内存的动态分配及销毁

这个例子只是动态变量的创建而已。

要创建动态数组,要用到:

int *p;
p=new int[10];
释放用delete []p;

此时创建的数组,没有数组名的,只能用指针来操作。
多用于创建链表的操作。
实际上,这个所谓动态的数组,是指:你可以在程序运行结束之前手工释放的。
而非动态数组则不可以。一直存在,知道程序运行结束。
而创建链表等操作,由于事先不知道到底需要多大的长度,定义长了吧,太浪费,尽管也可以(现在计算机内存都是1个G,2个G的)。太小了吧,又不够。
干脆,用动态数组,需要了,我就new一个,不需要我就delete。
就这个意思。

定义动太数组:
int *p;
int n = 10;
p = new int[n];
动态是指数组在程序编译时并没有被分配空间,而是在程序执行时来分配空间。
在你的例子中,int *p;这条语句是定义一个指针,它指向一块内存,在那块内存中会放置一个整型变量。但在编译时这个整型变量的内存并没有分配,只有在执行p=new int;这句之后内存才分配出来,然后你才能通过指针p对那块内存进行操作。这就是动态了。