【欢迎指出错误】wKiom1ZkQKDjc8r6AAFMtgJ8kzE614.png

wKioL1ZkQSyhOGzkAANlsr0FS2c954.png

wKioL1ZkQT2hsZQ4AABbXk97KYM713.png

===================20160904update===============================

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
/*****************  数组指针 相关总结   *********************/
int main()
{
    int n[][3] = {10,20,30,40,50,60};
    int (*p)[3] = n;    // p 是 int[3]*   一维数组int[3]*是 数组地址   p[0]<->*(p + 0)<->*p 是int[3]为一维数组数组首元素地址     注意 n + 1  也是int[3]*
                   // 但是n是 int[2][3] 二维数组首元素地址 n+1    越过int[3]一维数组
                   // &n是int[2][3]*    二维数组地址      &n + 1 越过整个二维数组
    // n+0  n+1 ... 后是int[3]*
    // *(n + 1) <->  n[1]    *(n + 0)<->n[0]  为int[3] 一维数组首元素地址             (n+0为int[3]*  一维数组地址 阶引用---->*(n+0)为int [3] 一维数组首元素地址)
    //  *(*(p ) + 1)  、*(p[0] + 1)、 (*p)[1]是一样的
    cout<<p[0][1]<< " " <<*(*(p) + 1)<< " "<<*(p[0] + 1)<< " " <<(*p)[1]<<endl; // 20   20  20
    cout<<n[0][1]<< " " <<*(*(n) + 1)<< " "<<*(n[0] + 1)<< " " <<(*n)[1]<<endl; // 20  20  20
    p = n;
    //     10           20                   30
    cout<<p[0][0]<< "  " <<*(p[0]+ 1)<< "   "<<(*p)[2]<<endl;
    return 0;
}

wKiom1fMOf_RjWMhAAA56Efac38298.png

wKioL1fMOf_wjiYFAAACYxZqKH8460.png