访问二维数组理解

先从一维数组讲起

int main() {
	int arr[5] = { 1,2,3,4,5 };

	for (int i = 0; i < 5; i++) {
		printf("%d",arr[i]);    //对数组进行访问
	}
	return 0;
}

其实 arr [ i ]  == * (arr + i)  这两个是完全相等的,在c语言指针(1)8.数组名与   &数组名

中我们说过数组名就相当于数组首元素地址,所以对(arr+i)进行解引用后就可以访问到这个数组的每一个元素。

bc2be3761e3a4e3cbba658f65217a1ad.png

 访问二维数组本质

周所周知二维数组的访问方法为:arr [ i ] [ j ] ----- i 表示行,j 表示列

int main() {

	int arr[3][5] = { { 1,2,3,4,5 },{ 2,3,4,5,6 },{ 3,4,5,6,7 } };
	                  //第一个元素    第二个元素    第三个元素
	for (int i = 0; i < 3; i++) {

		for (int j = 0; j < 5; j++) {

			printf("%d",arr[i][j]);  //访问数组

		}

	return 0;
}

其实二维数组也可以抽象成一维数组,因为二维数组在内存中也是连续存放的 

使用arr [ i ] [ j ] 

就是先对arr数组进行 arr [ i ] ==  * (arr + i) 操作,拿到数组arr的第一个元素(行),

然后在对第一个元素进行 arr [ j ] ==  * (arr + j) 操作,拿到元素中的元素(列)。

50b71c41c3114092967f4355de54a38d.png

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值