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)++