#include <stdio.h>
int main(void)
{
int a[] = {6,7,8,9,10};
int *ptr = a;
*(ptr++) += 123;
printf("%d, %d\n",*ptr, *(++ptr));
return 0;
}
这里有些疑点需要解释一下,估计只是本人不太清楚,故这里记录一下:
首先,数组a的地址和值为:
*(ptr++) += 123;
这句语句执行之后,我在gdb里的显示是这样的:
就是ptr指针a[1]:7
接下去执行 printf("%d, %d\n",*ptr, *(++ptr));
我想在执行printf语句是,ptr又自增了一个单位。。指向了a[2]了。所以才会打印出8,8;
但是我觉得这种编程风格不太好,应该是应试教育出的题目,真正写代码是很少这样写的。
在gcc编译的结果有如下warning:operation on 'ptr' may be undefined