zoukankan      html  css  js  c++  java
  • 二级指针和二维数组

    下面看二维数组:
    int a[3][4];
    改写下形式,也许,你就懂了 int (a[3])[4];
    a[0], a[1], a[2]    //他们都是int [4]的类型,都是4个int元素的首地址,你可以画个图
    a   // 是 int [3] [4]的类型,它是a[0] , a[1], a[2] ,3个元素的首地址,画个图;
    
    a + 1 就是&a[1] ,  a + 2 就是&a[2];
    *(a + 1 ) + 2 就是 a[1] + 2, 也就是 &a[1][2],  于是 *( *(a + 1) + 2)  就是a[1][2];
    
    现在看二维指针和数组指针,
    int * * pi;        // pi = a;这里的赋值是不可以的,你懂的,类型不一样,除非你强制转换
    int  (*pj)[4];   // pj = a;  这里赋值是可以的;数组指针
    
    假设int  4个字节,指针也都是4个字节,而且 pj = pi = 0 (地址十进制)
    pi + 1  //  地址是 4,偏移了一个int*的元素,
    pj + 1  //  地址是 16,偏移了4 * 4个int元素,
  • 相关阅读:
    学习《MYSQL》课程,日期2017.4.25-2017.4.30
    Netty学习笔记
    WebSocket学习
    Class 泛型
    SAX解析与DOM解析
    HashMap和HashTable的区别
    SQL语句整理
    观察者模式学习
    状态模式学习
    策略模式学习
  • 原文地址:https://www.cnblogs.com/mlj318/p/2182348.html
Copyright © 2011-2022 走看看