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
相关文章推荐
- [笔记]一道C语言面试题:得到整数的M进制表示字符串
- C语言面试题
- C语言常见面试题
- C语言面试题汇总
- 16道嵌入式C语言面试题
- C语言面试题
- c语言面试题__指针篇
- 12个有趣的c语言面试题
- 常见C语言面试题之五:两个字符串的最大公共子字符串
- C语言面试题八——其他篇3
- C语言—链表面试题之带环问题的总结
- 面试题1-- C语言4
- 【面试题】C语言:实现一个函数,判断一个数是不是素数。
- C语言面试题大汇总之华为面试题
- C语言面试题大汇总,个人觉得还是比较全地!!!
- C语言面试题大汇总(三)
- c语言实现链表面试题
- 面试宝典:C语言面试题总汇(一)
- 有意思的C语言面试题
- 【C语言面试题】第2题:宏参数的连接