1、再用new动态的申请一块内存并把首地址赋值给指针之后,如果该块内存不在需要,则用delete来回收内存,否则则有可能发生内存泄露事件。
并且delete只能对new的地址和空指针使用,其他的一切都是错误的。并且不要用delete释放一块内存两次,那样会发生意想不到的结果。
delete作用的是地址而不是指针。
2、静态连编指的是在程序的编译阶段为变量,数组等数据对象分配空间,不管在程序中是否能用得到,而像new malloc这样的函数,在程序运行的时候动态的申请内存空间,为数据对象分配这些内存空间,并且可以随时更改数据对象的长度大小,所以就叫做动态联遍。
3、指向数组第一个元素的指针,也就是数组的首地址,也就是数组名。也可以说数组名= 数组首地址,用new分配的动态数组可以用接受地址的指针作为数组名使用。
4、指向数组的指针虽然和数组名有着相同的用处,但是他们是不同的。比如变量名是常量是不能改变的,但是指针值是可以所算数运算的。在指针+1或者-1的时候,前进和倒退的字节数并不一定是1,而是由指针指向的数据对象的类型来决定的。
数组名也就是数组第一个元素的地址,也就是这一段内存空间的首地址。
普通的变量都是在栈中申请内存空间,但是new是在堆中申请空间。
可以直接将数组名赋值给指针,也可以判断数组名和第一个数组元素取得地址是相等的。
5、
数组名和指向数组指针的区别:
a,数组名是常量,指针是变量;
b,sizeof作用于数组求的是数组的长度,作用于指向数组的指针,求的是指针的长度。
6、数组名和对数组名取地址,两者在数值上相等,但是在意义上不同,前面的一个是数组第一个元素的首地址,但是后面的是整个数组的首地址,以至于在指针运算的时候,二者都加一,得到的结果是截然不同的。