为什么C语言中*(t+i)代表数组第i+1个元素?

img

c语言下标是从0开始的,*t 是指针,且表示值
如果

a[]={1,2,3,4,5,6,7,8}

这时a有8个元素(相当于定义了一个a[8])

t = a //t指向a的首地址

即相当于*t = a[0]

所以
*(t+1)对于a[1]
表示t向后指向一位

所以可以这样理解*(t+i)=a[i]

以上是自己的理解,有什么不对的地方请批评指正,谢谢

C语言中数组下标是从0开始的

因为c语言第一个数的下标是从0开始的所以第一个元素1的下标应该是0

t代表第1个元素,(t+i)就代表第i+1个元素

  1. 首先要知道数组在内存空间的地址是连续的
  2. 数组名是数组的第一个元素的地址(&T[0]),也就是指针,指针加1,就是地址加4个字节,也就是访问数组的第二个元素。

A[B]
*(A+B)
*(B+A)
B[A]
//以上四行等价

"abc"[1]
*("abc"+1)
*(1+"abc")
1["abc"]
//以上四行等价

A[0]
*(A)
0[A]
//以上三行等价