C++new申请⼆维动态数组详解
C++ new申请⼆维动态数组详解
new关键字
new关键字⽤于申请⼀段动态内存空间,位于堆上,在程序运⾏过程中才执⾏。可以⽤来创新数组和实例化对象。
如图所⽰:⽤new申请⼀维动态数组,⼤⼩为5。
int*arrayPtr=new int[5];
其中new后⾯接的是对象,上⾯为⼀个int[5]的数组,其返回值为指向数组元素的指针变量。即申请了sizeof(int)*5个字节⼤⼩的内存,并返回其地址值存放于指针arrayPtr中。
⼆维数组动态申请
⽅法⼀
int**arrayPtr=new int*[5];
for(int i=0;i<5;++i)
{
arrayPtr[i]=new int[5];
}
其中,第⼀⾏的new申请了sizeof(int*)x5个字节⼤⼩空间,并将其地址值存放于⼆级指针arrayPtr中(此处应为⼆级指针,因为指向的数组元素为⼀级指针),简单点说就是申请了⼀个数组⼤⼩为5,元素数据类型为 int* 的数组。for循环的代码表⽰的是遍历arrayPtr数组(⾥⾯元素为int*)⾥的每⼀个元素,并申请⼤⼩为5的⼀维数组。
如下图所⽰:
⽅法⼆
int(*arrayPtr)[5]=new int[5][5];
其中,new申请了sizeof(int)x5x5的内存⼤⼩,并将其地址值存储于指针arrayPtr,arrayPtr为数组指针,指向int[5]的数组。
也就是说,创建了⼀个⼤⼩为5的数组,数组中的元素为int[5],所以其地址值保存的指针类型为指向int[5]的指针类型,就是int(*)[5]。如下图所⽰:
sizeof 指针最后
其实⽅法⼀和⽅法⼆的区别就是,⽅法⼀⽤的是指针数组,⽅法⼆⽤的是数组指针,⽅法的不同,导致地址值存储的指针类型不同。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论