指针与二维数组

xiaoxiao2021-02-28  107

#include <stdio.h>   int main() { int  a[3][4] = {                  00,01,02,03,                  10,11,12,13,                  20,21,22,23                    };   //---------------------------------------下面2种等价--------------------------------------------   printf("a                        指向一维数组a[0],即0行首地址:%p\n",  a ); printf("a+1                    指向一维数组a[1],即1行首地址:%p\n", a+1); int(*p)[4] = a;  //指向一个长度为4的一维数组的指针 (行指针) printf("p                        指向一维数组a[0],即0行首地址:%p\n", p); printf("p+1                    指向一维数组a[1],即1行首地址:%p\n", p + 1); /* 地址:00000000002BFB78         地址:00000000002BFB88 两个地址相差  10 即16字节,  正好 一行元素的空间  4*4 */   //------------------------------------下面3种等价----------------------------------------------- printf(" *a                         a[0][0]首地址:%p\n", *a); printf(" *a + 1                  a[0][1]首地址:%p\n", *a + 1); printf("&a[0][0]    a[0][0]首地址:%p\n", &a[0][0]); printf("&a[0][0]+1    a[0][1]首地址:%p\n", &a[0][0] + 1); printf("a[0]                      a[0][0]首地址:%p\n", a[0]); printf("a[0]+1                  a[0][1]首地址:%p\n", a[0]+1);   /* 地址:00000000002BFB78         地址:00000000002BFB7C 两个地址相差  4 字节,  正好 一个元素的空间   */ //-----------------------------------指针剖析---------------------------------------------------   int  *  arr1[5];  //指针数组 int  ** p1 = arr1; //指针的指针        int   arr2[3][5]; //元素是数组的数组                int  (*p2)[5] = arr2;  //数组指针 (行指针)          int   arr3[5];

       int  *p3 = arr3; //普通整形指针

        int  arr4[5];         int(*p4)[5] =& arr4;  //数组指针 (行指针)     return 0; }  
转载请注明原文地址: https://www.6miu.com/read-34306.html

最新回复(0)