二维数组和指针 超简洁

#include "stdio.h"
int temp[2][4] = {{ 1,2,3,6 } , { 5,4,7,9 }};
int main() {
	printf("%d\n" , **temp);    
	printf("%d\n",**(temp + 1));
	printf("%d\n", *(*(temp + 1) + 1));                 
	return 0;
}

自定义了一个二维数组temp[2][4],其又相当于两个一维数组合并,每个一维数组有四个元素。

首先明白对于一维数组来说,数组名代表数组第一个元素的首地址。这句话很重要。

那么对于这个二维数组来说,相当于由temp[0]和temp[1]组成,temp[0]就是一个数组名,它等于&temp[0][0]。

这点明白后所有二维数组和指针就简单了,这个main里的第一个输出,temp = &temp[0](不明白的时候想想紫色的那句话)。而temp[0] = &temp[0][0](还是紫色那句话),所以**temp = temp[0][0]。所以第一个输出是1。

第二个输出,temp+1 = &temp[1],下面的分析和上面一样,结果为5。

第三个输出,*(temp+1) = temp[1],*(temp+1) +1 = temp[1][1],剩下同理,结果为4。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值