为什么数组成员的结果在分配后没有改变?

why doesn't the result of an array member changed when have assigned it?

当我做了这样的事情时:

int arr[]={11, 12, 13, 14, 15};
int *p=arr;
*(p++) += 100;

arr[1]的结果还是12,为什么?

您正在将 100 添加到数组 arr[0] 的第一个元素,然后将 p 移动到下一个元素 arr[1]。这个表达式:

*(p++) += 100;

实际翻译成这样:

*p += 100;
++p;

你是post-incrementingp这不会改变p[1]。要更改 p[1],您需要 pre-increment p。然后自减p得到p[1].

示例:TRY IT ONLINE

#include <stdio.h>

int main(void){
    int arr[]={11, 12, 13, 14, 15};
    int *p = arr;
    *(++p) += 100;
    p--;
    printf("%d\n", p[1]);
    return 0;
}