C语言学习二维数组

二维数组的定义

1.类型  数组名[常量表达式][常量表达式],注:只有第一维可以不写常量,后面必须要加上。

int a[6][6]; 6行6列

char b[4][5]; 4行5列

double  c[6][3]; 6行3列

int b[4][5];

 

 2.二维数组的访问

数组名[下标][下标]

a[0][0]; //访问a数组中第1行第1列的元素

•同样需要注意下标的取值范围,以防止数组的越界访问。

比如int a[3][4]; 其“行下标”的取值范围是0~2,“列下标”的取值范围为0~3,超出任何一个下标的访问都是越界访问。

 

 3.声明与初始化二维数组

(1).完整声明,完整初始化:int x[3][2]={1,2,3,4,5,6};

(2)不完整声明,完整初始化:int x[][2]={{1,2},{3,4},{5,6}};

(3)完整声明,不完整初始化:int x[3][4]={0};

C99同样增加了一种新特性;指定初始化的元素,可以对数组中某些指定元素进行初始化赋值,其他元素则被初始化为0;

int a[3][4]={[0][0]=1, [1][1]=2, [2][2]=3 };

 

复制代码
#include <stdio.h>

int main()
{
    int a[4][5] = {
        {80, 92, 85, 86, 99},
        {78, 65, 89, 70, 99},
        {67, 78, 76, 89, 99},
        {88, 68, 98, 90, 99}
    }; 
    int i, j;

    for (i = 0; i < 5; i++)
    {
        for(j = 0; j < 4; j++)
        {
            printf("%d ", a[j][i]);
        }
        printf("\n");
    }

    return 0;
}
复制代码

复制代码
#include <stdio.h>

int main()
{
    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));

    return 0;
}
复制代码

 

 

复制代码
#include <stdio.h>

int main()
{
    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]);

    return 0;
}
复制代码

 

 4.结论

*(array+i)==array[i];

*(*(array+i)+j)==array[i][j];

*(*(*(array+i)+j)+k)==array[i][j][k]; 

posted @   清歌牧言  阅读(492)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示