访问数组元素的方法小结

一)、一维数组和指针

若有以下语句:

int *p,s[10],I;

p=s;

s[i]的地址可用下面三种方法表示:

1&s[i]     (2) s+i     3p+i

因此可以用s[i]*(s+i)*(p+i)来表示s[i]。由于s[i]可以用表达式*(s+i)来表示,同理*(p+i)也可以用p[i]来表示。事实上在c语言中,[]并不仅仅是用作表示数组元素的记号,而是一种运算符。因此当p指向数组s的首地址时,表示数组元素s[i]的表达式有下面四种方法:

1s[i]        2*(s+i)           (3) *(p+i)              (4) p[i]

在这里s是数组名,是不可变的,而p是指向数组首地址的指针,其值是可变的。

二)、二维数组和指针

若有以下语句:

#define M 10

#define N 8

int a[M][N];

则二维数组元素的地址可以用下面5种方式表示:

1&a[i][j]

2a[i]+j

3*(a+i)+j

4&a[0][0]+i*N+j

5a[0]+i*N+j

相应的数组元素也有5种表达方式:

(1)       a[i][j]

(2)       *(a[i]+j)

(3)       *(*(a+i)+j)

(4)       *(&a[0][0]+i*N+j)

(5)       (*(a+i))[j]

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值