c运算符*y =&x []实际上是什么意思?

Max*_*xim 0 c operators

uint16_t x[] = {1,2,4,8};
uint16_t *y = &x[1];
y+=2;
Run Code Online (Sandbox Code Playgroud)

所以输出是8,我想知道为什么?在我看来,这应该等于4,因为&x [1]应该是2并且加2应该等于4.我缺少什么?

mol*_*ilo 10

这是你的数组:

    [0] [1] [2] [3]
   +---+---+---+---+
x= | 1 | 2 | 4 | 8 |
   +---+---+---+---+
Run Code Online (Sandbox Code Playgroud)

y = &x[1]是指向x[1]第二个元素的指针:

    [0] [1] [2] [3]
   +---+---+---+---+
x= | 1 | 2 | 4 | 8 |
   +---+---+---+---+
         ^
         |
         y
Run Code Online (Sandbox Code Playgroud)

y += 2向右移动y两步:

    [0] [1] [2] [3]
   +---+---+---+---+
x= | 1 | 2 | 4 | 8 |
   +---+---+---+---+
                 ^
                 |
                 y
Run Code Online (Sandbox Code Playgroud)

现在*y是8