c語言關於指標地址加1 那麼他是怎麼移動的呢

2021-03-11 03:26:22 字數 2328 閱讀 9803

1樓:ccc菜辣椒

主要是看你定義指抄針的型別,比如你bai定義int *p=null; 那麼duint佔4個位元組。指向int的指標

zhi+1,該指標所指的記憶體地址要dao+4;如果你是定義 char *p=null; 那麼char佔1個位元組。指向char的指標+1,該指標所指的記憶體地址只要+1

剛學習c語言的朋友,對指標「移動」可能不太理解。舉個例子,例如下述**:

int a = 1;

那麼大家都知道a + 1肯定就是2了。如果是指標呢?例如:

int *p = 1;

p + 1還是2嗎?

為了說明問題,請看以下**:

2樓:小欽

說實話,我不懂你說的意思。c語言中,指標地址加一的話,就是指標變數的改變。這改變之後,經過編譯交由硬體實現。硬體在記憶體層面上對資料進行移動。

3樓:匿名使用者

主要是看bai你定義指標的型別,du比如你定義zhiint *p=null; 那麼int佔4個位元組。指dao向int的指標+1,該指標所指的記憶體內

地址要+4;如果容你是定義 char *p=null; 那麼char佔1個位元組。指向char的指標+1,該指標所指的記憶體地址只要+1

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

4樓:匿名使用者

第一句應該是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++結果是一樣的,但是這個計算過程是不一樣的。這容才是他們的區別。

祝你進步!

5樓:

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

6樓:匿名使用者

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

7樓:匿名使用者

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

8樓:匿名使用者

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

9樓:匿名使用者

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

10樓:匿名使用者

區別有兩點

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

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

11樓:好人泉哥

p++相當於p=p+1

這裡的來1特別要注意自

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

例如int a[4]=;

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

*p++==2

*(p+1)=2

12樓:匿名使用者

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

p++修改了p本身的值

相當於p = p+1;

13樓:匿名使用者

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

14樓:一季忘川

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語言scanfd,p中,指標p作為輸入地址為

在第一次輸入陣列元素後p就指向最後一個陣列元素的下一個地址了,所以要在輸出之前再加上一個p a 語句重新將p指向a 0 p就是地址,懂嗎?p指向了陣列a,p的地址就是陣列a的地址,p 就指向了下一個陣列中的地址 c語言為什麼這裡不用取地址符號 scanf d p 而要用p p就是地址,懂嗎?p指向了...

c語言問題求教 關於指標變數問題

你不知道為什麼會這樣?其實,這個也很好理解的。因為你的p是指向int型資料的,而int型資料在你的編譯器中佔用的是4個位元組,所以你的結果才是 2,而不是 8.就拿你這個程式來說吧。p指向的是記憶體單元1638212。但是p 1指向的確實1638212 4.而不是1638212 1.這是由你的資料型...

c語言指標問題p後面應該是變數還是地址

如果是宣告比如int p 後面應該跟地址 如果是先宣告int p 再 p 後面應該是值 不過變數可以是值又可以是地址 c語言的指標問題。p i 是代表取值呢還是取地址?定義int p a,那麼p 0就是 a 0 的首地址,p i就是a i 的首地址,p 2就是a 2 的首地址,p 0 就是a 0 0...