赞
踩
p++会先p,然后赋值a = *p,然后p++(即p指向后一位元素);
(p)++会先p,然后赋值a = p,然后p的值++;
#include<stdio.h> void out_arr(int arr[]){ for(int i=0;i<4;i++){ printf("%d ",arr[i]); } printf("\n"); } int main(){ int arr[4] = {1,3,5,7}; int *p = arr; // *p =1 int a,b,c,d,e; a = *p++; // a=1; *p = 3,即先执行a = *p,然后让p++指向后一元素 printf("%d %d\n",a,*p); // =>3 out_arr(arr); b = (*p)++; // b = 3; *p = 4; arr[1] = 4,即先执行b= *p,然后对*p的值++,p还是指向arr[1] printf("%d %d\n",b,*p); out_arr(arr); c = *(p++); // c = 4; *p = 5; 即先执行c = *p ,然后让p指针++,*(p++) 与*p++ 相同 printf("%d %d\n",c,*p); out_arr(arr); d = ++*p; // d = 6;*p = 6; arr[2] =6;即对*p取值后令其+1 后赋值给d,p指向的位置不变 printf("%d %d\n",d,*p); out_arr(arr); e = ++(*p); // e = 7;*p = 7=arr[2];arr[2] = 7;先*p,然后*p的值++,然后赋值给3,p指向的位置不变,++*p与++(*p) 相同 printf("%d %d\n",e,*p); out_arr(arr); return 0; }
执行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。