c語言中 *p++ 和 (*p)++ 和 *(p++) 和 *(++p) 和++(*p)和 *(p--)和 *(--p)有什么區別?


*p++是指下一個地址;

(*p)++是指將*p所指的數據的值加一;

/******************解釋**********************/

->C編譯器認為*和++是同優先級操作符,且都是從右至左結合的,所以*p++中的++只作用在p上,和*(p++)意思一樣。

->在(*p)++中,由於()的優先級比*和++都高,所以++作用在()內的表達式*p上.

/*****************解釋************************/

*(p++)是指是先取*p的值,再使p值+1;

*(++p)是指先對p+1,然后再取*p的值;

++(*p)是指地址p所指的數據+1;

*(p--)是指先取*p所對應的數據,然后使p-1;

*(--p)是指先使p-1,然后在進行*p運算。

/****************解釋*************************/

->*(p--)  相當於     a [i--];

->*(++p) 相當於     a [++i];

->*(--p)   相當於     a [--i];

/***************解釋**************************/

例:

int x,y,z,l,m,n,q;

int  a[]={1,2,3,4,5};

int* p=a;

x=*p++;   //執行這一句后x=a[0]=1,p=a+1

y=(*p)++;  //執行這一句后,y=a[0]+1=2,p值仍然=a

z=*(p++);       //執行這一句話后,z=a[0]=1, p=a+1

l=*(++p);  //執行這一句后,l=a[1]=2,  p=a+1

m=++*(p)     //執行這一句后,m=++a[0]=2   p=a

n=*(p--)  //執行這一句后,n=*p-1=1-1=0 p=a

q=*(--p)  //執行這一句后,p=p-1=a-1,先讓p自減,在進行*運算。q=a[-1]//此處理解即可,數組不存在a[-1]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM