指针系列六(指针与二维数组)


    //指针与二维数组
    int array[4][5] = { 0 };
    printf("sizeof int: %d\n", sizeof(int));
    printf("array: %p\n", array);
    printf("array + 1 : %p\n",array +1);

//上面程式证明 array+1,地址加了20,每一个整形四个字节,相当于跨越了五个字节

//证明了array是指向包含了五个元素的数组的指针

 

//指针解引用

    int array[4][5] = { 0 };
    int i, j, k=0;
    for ( i = 0; i < 4; i++)
    {
        for ( j = 0; j < 5; j++)
        {
            array[i][j] = k++;
        }
    }

    printf("*(array+1): %p\n",*(array +1) );
    printf("array[1] :%p\n", array[1]);
    printf("&array[1][0]:%p \n", &array[1][0]);
    printf("**(array+1): %d\n", **(array + 1));   

//-----------------------

下面相等

    printf("*(*(array+1)+3): %d\n", *(*(array + 1) + 3));//第二行第四列   8
    printf("array[1][3]:%d \n", array[1][3]);//第二行第四列   8

//-----------------------

    // 数组指针与二维数组

    int array[2][3] = { {0,1,2},{3,4,5} };
    int (*p)[3] = array;
    printf("**(p+1):%d\n", **(p + 1));
    printf("**(array+1):%d\n", **(array + 1));
    printf("array[1][0]:%d\n", array[1][0]);

    printf("*(*(p+1)+2):%d\n", *(*(p + 1) + 2));
    printf("*(*(array+1)+2):%d\n", *(*(array + 1)+ 2));
    printf("array[1][2]:%d\n", array[1][2]);

 

posted @   江南王小帅  阅读(39)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示