从某个元素的指针在函数中索引数组

indexing array in function from the pointer of some element

想象一些数组

uint8_t var[5] = {1,2,3,4,5};

所以var将是指向这个数组第一个元素的指针,并且

uint 8_t* a=var;
b=a[3]

b=var[3]

会得到相同的结果。

但是会

a = &var[2];
b = a[1];

b=var[3];

一样吗?

这次作业后

a = &var[2];

相同
a = var + 2;

由于数组指示符隐式转换为指向其第一个元素的指针,指针 a 指向元素 var[2].

所以 a[0] 产生 var[2]a[1] 产生 var[3].

注意下标运算符a[i]的计算方式类似于*( a + i ).

所以你有 a[1] 等价于 *( a + 1 ) 又等价于 *( var + 2 + 1 )*( var + 3 ).