指针和数组的微妙关系(从C源码片段理解)

Submitted by dravenk on Thu, 03/30/2017 - 22:13

指针和数组的微妙关系(从C源码片段理解)

#include <stdio.h>
int main(void) {
        int cipp[4][2] = { {3,5}, {2,7}, {4,2}, {6,9}};
        int (*pt)[2];   //pz指向一个(内含两个int类型值)的数组

        /****************************************
         *                                      *
         * pt 指向 cipp 数组(cipp存放在指针pt)*
         *                                      *
         ****************************************
         */
        pt = cipp;

        printf(" pt[2][1] = %d \n", pt[2][1]);
        printf(" *(*(pt+2))+1) = %d\n", *(*(pt+2)+1) );

        return 0;
}

编译运行结果:

 pt[2][1] = 2
 *(*(pt+2))+1) = 2

个人的理解:

  • 指针是指向内存地址的变量。
  • pt变量(指针)返回int类型的值
  • 指针pt包含两个值pt1.pt2
  • 数组cipp保存在指针pt

~