数组,二维数组

什么是二维数组

如果一个数组中的各元素仍是一个数组,那么她就是一个二维数组,二维数组常用于表示表,表中的信息以行和列的形式组织,第一个下标代表元素所在的行,那么第二个下标代表元素所在的列。

 

创建二维数组

1.先声明,在用 new 关键字进行内存分配

        语法:

                数组元素类型 数组名称[][];

                数组元素类型 [][] 数组名称;

        //第一种声明方法
        int arr [][];
        //第二种声明方法
        int [][] arr2;

初始化二维数组

初始化就是给二维数组赋值,

        //初始化数组 第一种
        int arr4 [][] = {{1,2,3},{4,5,6},{7,8,9}};
        //初始化数组 第二种
        int arr5 [][] = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
        //初始化数组 第三种
        int arr6 [][] = new int[3][4];
        arr6[0] = new int[]{10,9,8,7};
        arr6[1][1] = 9;
        arr6[2][3] = 7;

### 数组指针与二维数组 数组指针一般与二维数组配合使用。例如定义一个数组指针`int (*p)[5]`,同时定义一个二维数组`int a[3][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}}`,并将二维数组的地址赋给数组指针`p = a`。可以通过指针操作来访问二维数组元素,如`*(*(p+1))`、`*(*p+1)` 、`**p`等。当对指针`p`进行自增操作`p++`后,指针会指向下一个一维数组,此时指针的指向和对其解引用操作会发生相应变化 [^1]。 ### 指针数组 指针数组是一个数组数组中的每个元素都是指针。例如`int *p[5];`,它表示一个包含5个整型指针的数组。指针数组可用于指向多个一维数组,在处理多个字符串时很有用,例如`char *str[3] = {"hello", "world", "c"};`,这里的`str`就是一个指针数组,每个元素指向一个字符串常量 [^2]。 ### 用数组指针将一维数组拆分成二维数组 可以使用数组指针将一维数组拆分成二维数组。例如有一个一维数组`int arrary[] = {1, 2, 3, 4, 5, 6};`,可以定义一个数组指针`int(*p)[ROW] = (int(*)[]) &arrary;`,然后通过嵌套的`for`循环来访问拆分后的二维数组元素 [^3]。 ```c #include <stdio.h> #define LINE 3 #define ROW 2 int main() { int arrary[] = {1, 2, 3, 4, 5, 6}; int(*p)[ROW] = (int(*)[]) &arrary; int i, j; for (i = 0; i < LINE; i++) { for (j = 0; j < ROW; j++) { printf("%d\t", p[i][j]); } printf("\n"); } return 0; } ``` ### 指向指针的指针与二维数组 指向指针的指针可用来指向指针变量。定义`char **p;` ,表示一个指向字符串指针变量的指针变量;`int **p;` 表示一个指向整型指针变量的指针变量。`*(*p)` 表示指针变量`p`指向一个指针变量,`*p`是`p`所指向的指针变量。在处理二维数组时,指向指针的指针可以间接访问二维数组元素 [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值