一天一个离职小技巧之数组负下标

2023-03-17 13:37:56 浏览数 (1)

❝不多说,直接上代码。❞

代码

代码语言:javascript复制
int array[11] = {0, 1, 2,
                 3, 4, 5,
                 6, 7, 8,
                 9, 10};

int *a = &array[5];    // 指针向前偏移5位
printf("%dn", a[-5]); // => 0
printf("%dn", a[0]);  // => 5
printf("%dn", a[5]);  // => 10

解析

  利用指针偏移实现。

  1. a的指针可以看成:
代码语言:javascript复制
int *a = &array[5];
=>
int *a = (array   5);
  1. a[-5]可以看成:
代码语言:javascript复制
a[-5]
=>
*(a - 5)
=>
*((array   5) - 5)
=>
*(array   0)
=>
array[0]
  1. 那么a[0]a[5]也是相应地偏移5位:
代码语言:javascript复制
a[0]
=>
array[0   5]
=>
array[5]
代码语言:javascript复制
a[5]
=>
array[5   5]
=>
array[10]

  赶紧试试吧。如果你们也有「一天一个离职小技巧」也可以告诉君君哟!

0 人点赞