C语言指针和数组

指针和数组

数组名是数组首元素的地址

int arr[10] = {1,2,3,4,5,6,7,8,9,10}
int *P = arr;
printf("%d\n",arr[2]);	//3		在编译器内处理时会变成*(arr+2)
printf("%d\n",p[2]);	//3		可转为 *(p+2)
printf("%d\n",2[arr]);	//3

[ ] 是一个操作符,2和arr是两个操作数,既然加法有交换律,同理,2和arr交换也是可以的

arr[2] < == > * (arr+2) < == > * (p+2) < == > * (2+p) < == > *(2+arr) == 2[arr]

二维数组与指针的关系:

a    							   二维数组名,指向a[0]

a[0], *(a+0), *a				    0行0列元素地址

a+1, &a[1]						   1行首地址

a[1], *(a+1)					   a[1] [0]的地址

a[1]+2, *(a+1)+2, &a[1] [2]			a[1] [2]的地址

*(a[1]+2), *(*(a+1)+2), a[1] [2]	 a[1] [2]的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值