c語言中p和p1有什麼區別,C語言中p 和p 1有什麼區別?

時間 2021-11-04 23:15:38

1樓:匿名使用者

第一句應該是p = p+1吧。

這2句的結果是一樣的,相信樓主也是知道的,都表示p+1然後結果儲存在p中。

但是所有的研發還是實驗,如果碰到自加1的運算都會選擇p++,這裡面的關鍵點是p++的運算速度比p=p+1快,雖然一條語句說快能塊多少呢?但是運算步驟少,不僅僅是提高速度,而且可以減少出錯的機率,這對於工程來說也是很重要的,必須要儘量減少不確定因素對程式的影響。

下面說下為什麼步驟少:

在計算p = p+1的時候,cpu的順序是這樣的

1 。 首先找到p+1中右邊p的地址,記住,cpu並不知道左邊的p和右邊的p是同一個地址,他會將這兩個p視為兩個不同的變數。

2. 找到右邊的p的地址後,然後加1,

3,這一步就是找左邊的p的地址。

4,。將結果賦值給左邊的p。結束

5. 計算機是不是很笨,是的,他很笨,但是他速度快,並且他嚴格按照規矩辦事,所以一般不會出現錯誤。

當執行p++的時候。

1.找到p的地址,然後加1,結束。

可以看出,p=p+1和p++結果是一樣的,但是這個計算過程是不一樣的。這才是他們的區別。

祝你進步!

2樓:黃柏青靚影

p++是後加加,與

p=p+1

略有不同,在迴圈體內部,p++

落後一個時步,也就是做完一次迴圈體後它才增加1。p=p+1,在迴圈體內部,即時增1。

看:for

(p=0;p<10;p++);

printf("|

%d\n",p);

printf("------------\n");p=0;for

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

printf("|

%d\n",p);

可以看出

p++在迴圈體內

的值的變化是:01

2345

6789

出迴圈體後變10

p=p+

1;在迴圈體內

的值的變化是:12

3456

78910

出迴圈體後

不變,保持10

3樓:賊寇在何方

p++ 和 p=p+1 在這裡沒什麼不同

不過如果用括號括起來,再賦給另一個變數,就有所不同了比如a=(p++)和a=(p=p+1)

假定之前p的值為n

那麼對於前者a=n,後者a=n+1

4樓:

兩段**的結果是一樣的. 都是在for迴圈最後實現p+1

5樓:

應該是 p++ 和 p=p+1 吧

沒區別,就是寫法的不同

c語言指標p+1與p++有什麼不同 5

6樓:匿名使用者

第一句應該是p = p+1吧。

這2句的結果是一樣的,相信樓主也是知道的,都表示p+1然後結果儲存在p中。

但是所有的研發還內是實驗,如果碰到自加1的運算都會選擇p++,這裡面的關鍵點是p++的運算速度比p=p+1快,雖然一條語句說快能塊多少呢?但是運算步驟少,不僅僅是提高速度,而且可以減少出錯的機率,這對於工程來說也是很重要的,必須要儘量減少不確定因素對程式的影響。

下面說下為什麼步驟少:

在計算p = p+1的時候,cpu的順序是這樣的

1 。 首先找到p+1中右邊p的地址,記住,cpu並不知道左邊的p和右邊的p是同一個地址,他會將這兩個p視為兩個不同的變數。

2. 找到右邊的p的地址後,然後加1,

3,這一步就是找左邊的p的地址。

4,。將結果賦值給左邊的p。結束

5. 計算機是不是很笨,是的,他很笨,但是他速度快,並且他嚴格按照規矩辦事,所以一般不會出現錯誤。

當執行p++的時候。

1.找到p的地址,然後加1,結束。

可以看出,p=p+1和p++結果是一樣的,但是這個計算過程是不一樣的。這容才是他們的區別。

祝你進步!

7樓:

p+1執行後p的值是p,而p++執行後p的值是p+1。

8樓:匿名使用者

我給你舉個例子,假設定義一個double 型別陣列,每個是4個位元組,所以,p+1表示指標移動了一個位置,也就是p+4,而p++只是p+1

9樓:匿名使用者

p+1的話指標實際上沒有移動,而p++則指標向下移動一個單位

10樓:匿名使用者

p+1和p++都表示是指標移動一個單位,只是p++要使用完本次指標才移動一個單位的,而p+1則是將指標移動一位才使用的。。。。

11樓:匿名使用者

p+1只是指標向後移一位,此時p本身指向的值不變,p++則是p指向它後一位指標指向的值。

12樓:匿名使用者

區別有兩點

1.p++將p的指標移動了,而p+1則沒有

2.p++返回沒加1的p的指標,而p+1返回加1後的指標

13樓:好人泉哥

p++相當於p=p+1

這裡的來1特別要注意自

它的單位是基本元素的型別

例如int a[4]=;

int*p=a; //a是個常量,就是‘1’的首地址則*p==1

*p++==2

*(p+1)=2

14樓:匿名使用者

p+1 與p++的區別就是,

p++修改了p本身的值

相當於p = p+1;

15樓:匿名使用者

第一個p值不變,第二個p值加了一個一。

16樓:一季忘川

int *p,*q,*s;

int a[10];

p = a; //p 指向

襲 a[0]

s=p+1; //s 指向 a[1] , p沒有變,還是指向 a[0]

q=p++; //相當於 q=p ; p=p+1; q指向a [0] ,p指向a[1]

c語言中*p+1和*(p+1)有什麼不同

17樓:勇欣笑庹斐

p++是後加加,與

p=p+1

略有不同,在迴圈體內部,p++

落後一個時步,也就是做完一次迴圈體後它才增加1。p=p+1,在迴圈體內部,即時增1。

看:for

(p=0;p<10;p++);

printf("|

%d\n",p);

printf("------------\n");p=0;for

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

printf("|

%d\n",p);

可以看出

p++在迴圈體內

的值的變化是:01

2345

6789

出迴圈體後變10

p=p+

1;在迴圈體內

的值的變化是:12

3456

78910

出迴圈體後

不變,保持10

請問在c語言中++p和p++有何區別?

18樓:

如a=*(++p)表示p先自增,指向下一個地址 ,再取值 相當於a=*(p+1) ;p=p+1

a=*(p++) 表示先取p的值 p再指向下一個地址 相當於a=*p; p++

++p先自增

p++先取值

如果沒賦值給上面的a或輸出的話,效果是一樣的

19樓:有錢買不起房子

++p和p++都是自增運算,單獨使用沒區別,如果是*(++p)和*(p++)就不同了

*(++p)是p+1在給p,然後求值

*(p++)是先*p求值,然後p++,指標後移

在c語言的指標運算中*(p+1)與p+1有什麼區別 p是指標

20樓:談瑾高荷

*(p+1)表示具體的數值,指標p所指向的記憶體地址單元的下一個記憶體地址單元中的值;

p+1表示地址,指標p所指向的記憶體地址的下一個記憶體地址。

可以通過下面的例項來理解*(p+1)與p+1之間的區別:

int *p; // 定義一個int型別的指標pint a[3]=; // 定義一個int型別的陣列a,並進行初始化p = a; // 使指標p指向陣列a的首地址printf("%d", *(p+1)); // 輸出2,等價於a[1]

printf("%x", p+1); // 以16進位制形式輸出a[1]的地址(如08ff12),等價於&a[1](&為取地址運算子)

c語言中,p ++ 和p=p+1哪個執行快?

21樓:匿名使用者

p++的快。

可以這樣理解,對於 i = i + 3; 這個表示式,有兩個指令即+和=,所以計算機需要做兩件事,先算出i + 3的值,再把這個值賦給i。

而 i += 3; 這個表示式只有一個指令+=,計算機只需要做一件事讓i自增3。所以你看,只做一件事當然要比做兩件事快。

22樓:潛水灰飛煙滅

這兩個的本質是一樣的

23樓:匿名使用者

++p是執行得最快的

在c語言中, *(p++)、 *(++p) 、*++p 、*p++有什麼區別

24樓:神聖天使

jiqing0925 請不要誤人子弟,

*(p++) 和 *p++效果一樣,都是先取*p值,然後使p加1

*(++p)和*++p都是先p 自加,再取*p值

25樓:匿名使用者

*(p++) 取(p+1)處地址的值。

*(++p) 取(p+1)處地址的值。和上面一樣。

*++p 取(p+1)處地址的值。和上面一樣。

*p++ 唯一不同的一個,先取p地址處的值,再對p執行+1。

要注意的是,這裡的+1並不是絕對地向前移動一個位元組。

如果p是char型指標,則是向前移動一個位元組。

如果p是int型指標,則是向前移動4個位元組。

26樓:uspta鄭州站

*(p++)等價於*p++

27樓:我叫初一

*p++也是指向下一個元素 要是執行+1的話得加括號(*p)++

c語言指標p與p有什麼區別?printf輸出表列要哪個

金色潛鳥 宣告為指標以後,語句 裡,出現 p,表示 是 數值,出現 p,表示 是 位址。列印 數值 5 如果 寫 printf d p 不帶星號的,則是 a的位址。 逍遙足球子 p代表指標 32位的數,用來記錄位址的。p代表取出指標指向位址中的記憶體。 我是這樣理解的,指標 p顯示的是記憶體位址,而...

C語言中聯合和結構有什麼區別,C語言中的 和 有什麼區別?

前面對聯合變數的定義和聯合變數成員的表示以及對聯合變數的賦值作了描述,可以看出聯合與結構有許多相似之處,但是也指出了兩者的最大區別在於聯合是共址的,結構是異址的。即聯合的所有成員共同使用乙個記憶體位址,而結構的每個成員都有自己的記憶體位址。由於聯合的共址特性使得它與結構產生了很大差別。例如,在斌初值...

C 中,使用指標p和使用p有什麼區別

估計是 head被翻譯成引用了,如果是 head,則傳進來的是一個值,在外部的那個變數的值沒被更改,所以沒出正確結果.如果是引用的話,外部的那個變數的值就會被改變.你試試看. 首先指出你理解的一個錯誤,p和 p應該都是代表同一個記憶體儲存單元的地址 這句話沒錯,但是它是有條件的,是在對變數的引用中才...