美文网首页
C++ new多维数组

C++ new多维数组

作者: 科英 | 来源:发表于2020-05-30 19:19 被阅读0次
    int *p=new int[2];
    int *p=new int[2][3];  //错误
    int (*p)[3]=new int[2][3];  //正确
    int (*p)[4][5]=new int[2][4][5]; //正确
    

    为啥第二行就错误呢?其实我们可以这样理解:

    1. int(p)[3]其中p是指针,这是毋庸置疑的,那这个指针指向什么类的数据呢?我们改一下写法,编程int[3] (p),是不是就很简洁明了呢?p指向的类型是int[3]。
    2. new int[2][3]返回的2个int[3]类型的数组的首地址,赋值给p。
    3. 同理,第四行p指向的类型是int[4][5],new int[3][4][5]返回的是3个int[4][5]类型的数组的首地址,赋值给p。
    4. 针对第一行的情况,如果p的一开始地址为1000,假设int占用4个字节,那么执行p++以后,p的地址为1000+4,第三行的情况,如果p的一开始地址为1000,进行p++以后,p的请值为1000+43,以此类推,第四行p++以后p的值为1000+44*5

    参考:
    [1] https://blog.csdn.net/u012397189/article/details/78784928

    相关文章

      网友评论

          本文标题:C++ new多维数组

          本文链接:https://www.haomeiwen.com/subject/fhmhzhtx.html