printf
来源:互联网 发布:windows server官网 编辑:程序博客网 时间:2024/05/17 02:22
#include <stdio.h>
void main(){ int b=3;int a; int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf("%d,%d\n",*(ptr),*(++ptr));}结果是8,8.
首先int* ptr=arr;这一句使得ptr指针指向arr数组的第一个数,也就是6;*(ptr++)+=123;这个不是先执行括号里面的,因为里面的是ptr++,这是先取值,再自加,这一句相当于*ptr+=123;ptr++;两句。实际就是使得*ptr指针的内容加上123。也就是数组第一个6加上123变成129。做完之后ptr自加。这时候ptr指针指向数组的第二个数7;*****最后一个printf语句,先执行的是后面的*(++ptr)而不是*(ptr),所以ptr先自增,使得指针指向8,然后输出。这样就输出的都是8了。你可以把*(++ptr)和*(ptr)的位置对调一下,那么先执行*(ptr),再执行*(++ptr)。那么输出的就是8,7了。
0 0
- printf
- printf
- printf
- printf()
- printf
- printf
- printf
- printf
- printf
- Printf
- printf
- printf
- printf
- printf
- printf
- printf
- printf
- printf
- WiKi 1225 八数码难题
- 基于角色权限的界面配置管理
- 【数据结构和算法分析】栈与逆波兰式
- php的错误处理和异常处理
- android应用开发MVC框架(二)
- printf
- “6元麻辣烫事件”中解析六个网络营销方案
- hdu 2588 GCD
- HDU 2050折线分割的问题
- php图像处理函数大全
- 360安全卫士安装不了此程序被组策略阻止
- HDOJ2084
- 手机
- 【强连通缩点】 HDOJ 3072 Intelligence System