您的位置:首页 > 编程语言 > C语言/C++

C语言面试题——指针运算

2012-07-07 10:34 141 查看
#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息