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