代码之家  ›  专栏  ›  技术社区  ›  evstack

为什么递增指向数组的指针会得到这个结果?

  •  -1
  • evstack  · 技术社区  · 11 月前

    如果我定义了一个新的(int)数组,并将指向该数组的解引用指针递增1,为什么会得到以下结果?

    int main()
    {
        
        int myArray[1024];
    
        myArray[0] = 123;
        myArray[1] = 456;
    
        printf("%d \n", *myArray);
        printf("%d \n", *myArray+1);
    
        return 0;
    }
    

    输出为:

    123 
    124
    

    为什么下一个值不是456?为什么输出跳过3?

    1 回复  |  直到 11 月前
        1
  •  4
  •   ShadowRanger    11 月前

    Operator precedence 这个 * 绑得更紧,所以 + 1 适用于取消引用的结果。 *(myArray + 1) 会给你你期望的结果, 456 更习惯的说法也是 myArray[1] .