*p++是什么意思?


利用指針引用數組元素,比較方便靈活,有不少技巧。在專業人員中常喜歡用一些技巧,以使程序簡潔。在看別人寫的程序時可能會遇到一些令人混淆的情況,要仔細的分析。

請分析下面幾種情況(設p開始時指向數組a的首元素(即p=a)。

①    分析:

p++;

* pi;

p++使p指向下一元素a[1]。然后若再執行* p,則得到下一個元素 a[1]的值

②  

  *p++;

由於++和*同優先級,結合方向為自右而左,因此它等價於 *(p++)值。

先引用p的值然后,實現*p的運算,然后使p自增1

例8.7 的第2個程序中最后一個 for語句

for(i=0;i<10;i++,p++)

printf("%d", * p);

可以改寫為

for(i=0;i<10;i++);

printf("%d”,*p++);

作用完全一樣。它們的作用都是先輸出*p的值,然后使 p值加1。這樣下一次循環時:

* p就是下一個元素的值。

③ *(p++)與*(++p)的作用是否相同?

不相同

前者是取*p值然后使p加1;

后者是先使 p加1,再取*p,若p初值為a(即&a[o]),

如果輸出*(p++)得到 a[0]的值,

而輸出*(++p),得到a[1]的值。

④++(*p)表示p指向元素加1,如果p=a,則++(*p)相當於++a[0],若a[0]的值為3,則在執行++(*p)(即++a[0])后a[0]的值為4。注意:是元素a[0]的值加1,而不是指針p的值加1;

⑤ 如果 p當前指向 a數組中第i個元素 a[i],則:

*(p--)相當於a[i--],先對p進行“*”運算(求p所指向的元素的值),再使 p自減。

*(++p)相當於a[++i]先使p 自加,再進行“*”運算。

*(--p)相當於a[--i]先使 p 自減,再進行“*”運算。

將++和--運算符用於指針變量十分有效,可以使指針變量自動向前或向后移動,指

向下一個或上一個數組元素。

例如,想輸出 a數組的100個元素,可以用下面的方法:

p=a;

while(p<a+100)

printf("%d", * p++);

p=a;

while(p<a+100){

printf(“%d”,*p);

p++;}

但如果不小心,很容易弄錯。

因此在用*p++的運算時,定要十分小心,清楚是先取p值還是先使p加1。

有什么不足的地方歡迎各位大佬指正

操作系統:Windows10

軟件:Devc++

編譯器:TDM-GCC 4.9.2 64-bit Release


免責聲明!

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



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