31,2,3int pq pa qa 2int iq p為何i的結果為1而不是8,C語言的規定

時間 2021-05-07 20:01:23

1樓:疏金生禮鸞

p,q為兩個指標,開始是分別指向a,b陣列的首地址。

重點看if那句,意思是當(p+i)地址的值和(q+i)的值相等時,x=這個值*2

什麼時候相等呢,3的時候

因此x應該等於6選d

2樓:樂於分享

不是c語言規定的,定義指標p,q,通過p=a,將陣列的首地址賦給了p指向陣列第一個數1,q=2,定義i為整數,即i=2-1=1

3樓:恆者致遠

陣列指標的加減法是以陣列存放的資料的型別為準的,如果a+1指向的記憶體空間是什麼 ,你就明白為什麼不是8了

4樓:

指標的移動是以這個指標指向的變數型別的長度sizeof(type)為單位的,如果這個型別長度為4,那麼指標增加1,就是向後移動4個位元組。

反過來計算兩個指標之間距離的時候,也是以sizeof(type)為單位的。

另外,你這個**的結果,q-p應該是2,而不是1

5樓:葉子一哥

兩個指標不能進行加法運算,這是非法操作,因為進行加法後,得到的

結果指向一個不知所向的地方,而且毫無意義。兩個指標可以進行減法

操作,但必須型別相同,一般用在陣列方面,不多說了。

6樓:雪狼

你這個陣列定義的是想3個數1,2,3還是4個數1,2,3,0?