为什么数组成员的结果在分配后没有改变?
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]
.
#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;
}
当我做了这样的事情时:
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]
.
#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;
}