如何區別 p , p 和 p

2021-06-29 10:00:57 字數 586 閱讀 6818

在這裡先提出問題:

1.     如何區別(*p)++,*(p++)和*p++?

2.   「++」的運算優先順序比「=」高,那為什麼在執行「c=i++」語句時,直觀感覺是先賦值,再加一呢?

事實上,(1)所有的單目(一元)運算子具有相同的優先順序,而且是從右到左運算的,所以*(p++)和*p++是一樣的。(2)執行語句i=0;c=i++;  我們知道,執行結果是c=0,i=1.。其實,「c=i++」分為兩部分,「++」部分和「=」部分,「++」的優先順序高,所以先進行i++,即i=i+1,之後進行賦值,但是賦值並不是把變數i的值賦給"c",而是把「i++」運算的返回值賦給c,而i++的返回值是修改之前的i值,並且是個常量(在這裡也就是0)。也因此++i++編譯錯誤,因為字尾++返回常量,而不是變數i。

所以,假如 int  a=1;   int *p=&a;   int b;   那麼

(1)  b=(*p)++; 相當於 b=*p,(*p)++; 執行結果是b=1,  a=2,  p=&a;

(2)  b=*(p++); 相當於 b=*p,p++;     執行結果是b=1,  a=1,  p=&a+4;

(3)b=*p++與第(2)種情況相同。

P P和 P的區別

p p和 p三者的區別 假設我們定義乙個指標p。那麼會經常使用到三個符號 1,p 2,p 3,p 初學者經常會感到很迷茫,到底這三個符號表示什麼?我們知道,p是乙個指標變數的名字,表示此指標變數指向的記憶體位址,如果使用 p來輸出的話,它將是乙個16進製制數。而p表示此指標指向的記憶體位址中存放的內...

C語言 p p以及 p的區別

前言 先要理解位址和資料,你可以想象有很多盒子,每個盒子有對應的號碼,那個號碼叫做 位址 而盒子裡放的東西叫做 資料 上面就段理解了,p和p的區別就不難解釋了。p是指標變數,用來存放位址,你可以認為是上面所說的盒子的號碼,是解引用操作符,你可以把它理解成開啟盒子,p就是開啟p號盒子,取出裡面的資料。...

p 和 p的區別

p 和 p的區別 舉例,如清單3 cpp view plain copy include intmain void int p arr inta p 等價於a p 即a p p p 1 intb p 等價於b p 即p p 1 b p printf a d,b d n a,b return 0 例子...