学习补漏:指针数组与双重指针形成的二维数组的异同
暴露的问题 : (1):对指针数组形成二维数组的理解不深 (2):对普通指针与指针数组的内存情况产生混淆 (3):对new生成的二维数组的delete方法 问题(1):指针数组构建二维数组的原理: 心得理解: ①:指针数组本身就形成了一层数组,若要形成二维数组,仅仅需要新增一层数组内存 ②:所以单纯的指针变量若要形成二维数组,需要形成两层数组(形成指针数组–>形成二维数组) 问题(2):普通指针与指针数组内存情况混淆 (√): int * * p ; //定义双层指针; //【1】正确的写法 //****①分配指针数组内存 p = new int * [ n ] ; //****②由指针数组生成二维数组 for ( int i = 0 ; i < n ; i ++ ) { p [ i ] = new int [ n ] ; //开辟第二层(非指针内存) } //【2】错误的写法 //****①:混淆双层指针与指针数组的内存情况 for ( int i = 0 ; i < n ; i ++ ) { p [ i ] = new int [ n ] ; } //原因分析: 双层指针只分配有单一内存(4个字节),而没有分配相应的内存。 //*****②:混淆动态开辟内存的原理: 错误: int * * p = new int [ n ] ; 分析: ( 1 ) int * p = new