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...