❝不多说,直接上代码。❞
int array[11] = {0, 1, 2,
3, 4, 5,
6, 7, 8,
9, 10};
int *a = &array[5]; // 指针向前偏移5位
printf("%d\n", a[-5]); // => 0
printf("%d\n", a[0]); // => 5
printf("%d\n", a[5]); // => 10
利用指针偏移实现。
a的指针可以看成:int *a = &array[5];
=>
int *a = (array + 5);
a[-5]可以看成:a[-5]
=>
*(a - 5)
=>
*((array + 5) - 5)
=>
*(array + 0)
=>
array[0]
a[0]和a[5]也是相应地偏移5位:a[0]
=>
array[0 + 5]
=>
array[5]
a[5]
=>
array[5 + 5]
=>
array[10]
赶紧试试吧。如果你们也有「一天一个离职小技巧」也可以告诉君君哟!