美文网首页
二维数组

二维数组

作者: arkliu | 来源:发表于2022-10-07 09:14 被阅读0次

    二维数组数组名

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main() {
        // a代表第0行首地址
        // a+i代表第i行首地址  等价于  a[i]
        // *(a+i) 代表第i行首元素地址
        // *(a+i)+j 第i行第j列的地址  等价于  &a[i][j]
        // *(*(a+i)+j) 第i行第j列的地址的值 等价于 a[i][j]
        int a[3][4] = {
            {1,2,3,4},
            {5,6,7,8},
            {9,10,11,12}
        };
        
        int a2[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
    
        int a3[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
    
        int i=0;
        for (; i < 3; i++)
        {
            for (int j=0;j < 4; j++)
            {
                printf("%d  ", a[i][j]);
            }
            printf("\n");
        }
        
        // 二维数组名代表第0行的首地址(区别于第0行首元素地址,虽然值一样,但是步长不一样)
        printf("a = %d a+1 = %d\n", a, a+1); //a = 6421984 a+1 = 6422000  +16
    
        printf("%d  %d\n", *(a+0), *(a+1)); // 6421984  6422000   +16  *(a+0)是第0行首元素的地址
        printf("%d  %d\n", *(a+0), *(a+0)+1); // 6421984  6421988  +4
        printf("%d  %d\n", a[0], a[0]+1); // 6421984  6421988  +4
    }
    

    相关文章

      网友评论

          本文标题:二维数组

          本文链接:https://www.haomeiwen.com/subject/aebeartx.html