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什麼區別啊,C語言 p 和p的區別?
舉例 int a 3 a是一個整型變數,值為3int p a p是一個指標,指向a的地址說p,就是指標,p 是指標指向的內容,即a地址中的內容 實際上 p 和a 這個應該是一個意思了 對初學者來說,主要是分辨 號出現的位置,下面舉例說明。int i 2 int p i 出現在定義中,表示型別 int...
p n與 p n有什麼區別,c語言 p 與 ( p) 有區別嗎?運算順序如何?
操作符的優先順序在 p n這個式子中的優先順序是最高的,所以會先計算 p n的值,也就是a 0 n,再計算字首 所以最終結果是6 操作符的優先順序高於字首 操作符的優先順序,所以在 p n中會先計算p n的值,同樣也是a 0 n,然後再計算字首 所以最終結果也是6 因此,c和d都正確。 p 表示把p...
C 中,使用指標p和使用p有什麼區別
估計是 head被翻譯成引用了,如果是 head,則傳進來的是一個值,在外部的那個變數的值沒被更改,所以沒出正確結果.如果是引用的話,外部的那個變數的值就會被改變.你試試看. 首先指出你理解的一個錯誤,p和 p應該都是代表同一個記憶體儲存單元的地址 這句話沒錯,但是它是有條件的,是在對變數的引用中才...