C语言 二维数组初始化和指针含义

一、初始化

必须指定列的数量,行的数量可以不定义

1.分行进行初始化

定义一个2×3的数组

int a[2][3]={{1,2,3},{4,5,6}};
2.不分行初始化

定义一个2×3的数组

int a[2][3]={1,2,3,4,5,6};
3.部分数组元素初始化
int a[2][3]={{1,2},{4}};
//使用static定义,未赋值元素初始化为0
static a[2][3]={{1,2},{4}};
4.可省略第一维定义
int a[][3]={1,2,3,4,5,6};

二、二维数组的指针

以一个3×4的二维数组brr为例

1234
5678
9101112
1.brr:

类型为:

int (*p)[4]//指向首行的地址

数组指针: int (p)[4]
p在这里是一个指向整型数组的指针,要和指针数组进行区分。数组指针的
p有括号的包裹,即其重点在于是个指针,数组起修饰作用。
指针数组:int *p[4]
没有括号包裹,重点在于其是个数组,保存指针的数组

2.brr+1:

类型为:

int (*p)[4]//指向下一行的地址
3.brr[0]:

类型为:

int *//brr中第0行元素的首地址
4.brr[0]+1:

类型为:

int *//brr中第0行元素首地址加一,即首行第二个元素地址
5.brr[0][0]:

类型为:

int//brr中首行首元素值

若要指向二维数组,应为int **p=brr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值