在c語言中,有如下式子 int a 5pa apa

2021-03-12 14:39:06 字數 1867 閱讀 8133

1樓:匿名使用者

注意 pa+n指的是pa指向物件+n,也就是指向後面第n個物件。

題目中的a+4意思應該是a的地址+4,比方說原來pa = a = (short *)0x100,現在pa+2就是0x104,

也就是a地地址上+4,

但是實際上,如果在程式中寫a+2,實際上和pa+2相等的,因為a的型別大小本身就是2,所以感覺是你的理解沒有錯,書上也沒有錯,但書上的意思表達不清,一句話:

((unsigned long) a) +4 = (unsigned long) (a+2)

你理解的a+2,何書上說的a+4是一個值

2樓:瘋狂夏風翼

我來回答你的問題,舉個例子吧~int a[5]=,*pa=a是把3的地址賦給了pa指標,pa+=2後為pa指向7了,a+2*2=a+4,要考慮優先順序啊,呵呵~~~所以才會這樣~~~

3樓:匿名使用者

在這行**中int a[5],*pa=a; pa的值就是陣列a的首地址, pa+=2就是向後移動兩個元素的位置,pa+=2 和 pa = a +2是一樣的,而不是a +4。a+4就是從陣列的首地址開始移動4個偏移量,是錯誤的。

4樓:落夜辰星

c語言都快忘沒了 !

2*2不是等於四嗎?

5樓:匿名使用者

類似問題,上面解釋詳細

c語言,有如下定義: int a[2][3],(*pa)[3]=a;不是定義一個二維陣列a麼,又定

6樓:

其實pa是一個指向(包含

復3個元制素的)一維陣列的指標,因此可以指向任何一個包含3個元素的一維陣列

而a[2][3]是二維陣列,可以看作是由a[0]和a[1]兩個包含三個元素的一維陣列組成,如a[0]就可以認為是包含a[0][0]、a[0][1]、a[0][2]三個元素的一維陣列a[0]

這樣就可以理解pa=a的意義了,由於陣列a的首地址實際上相當於a[0]這個一維陣列的首地址,因此pa指向的是a[0][0]的地址,即&a[0][0]

使用指向陣列的指標的好處是,可以把陣列作為一個整體,如pa++或pa=pa+1會讓pa的值變為&a[1][0],而不是&a[0][1]

與指標陣列的區別是:指向陣列的指標是一個指標(只不過它指向的是陣列的地址,並以整個陣列為單位作運算),而指標陣列是多個指標(每個元素都是一個指標)

main() {int a[2][4]={1,2,3,4,5,6,7,8}; int (*pa)[4]=a; printf("%d,%d",*(*(pa+1)+2),pa[1][3]); }

7樓:吉祥二進位制

//整理一下原始碼如下

#include

int main() ;

int (*pa)[4]=a;

printf("%d,%d",*(*(pa+1)+2),pa[1][3]);

return 0;

}問題的關鍵是要理解  *pa是什麼型別回,它是一個 int [4]的類

答型。*(pa+1) //因為pa是 int [4]的型別,所以+1 實際上就是 陣列a[1][0]的位置。

*(pa+1)+2 //pa是int [4]的型別,但是 *pa卻是int型別啊。所以,*(pa+1)+2 實際上指向的是 a[1][2]的地址,所以,它的值是7。

pa[1][3] 也就是a[1][3]的值,就是8啊。

關鍵的問題要理解  陣列指標,理解的時候記得把*和識別符號去掉。

int (*pa)[4]=a;  //去掉後

c語言中有符號型別的int範圍,C語言中 有符號型別的int範圍( 128 127)是怎麼求出來的,特別是 128 怎麼理解 負數用二進位制怎麼表示

恩!首先要指出你的一個錯誤!int的範圍不是 128 127 這個是char的範圍,範圍的大小是由型別所佔有的位元組來決定的。如此所示 char是一個位元組8bit,那麼在二進位制中,8bit最大值是255,最小值是0 在是在無符號時 如果是有符號的話.那麼就還有一位是符號為,最高位是符號為。例如 ...

在c語言中 如果下面的變數都是int型別 則輸出的結果是

輸出結果是為7 1.pad sum 先將sum 此時為5 賦值給pad 此時sum的值,賦值給pad,pad也為5 再進行sum 操作。2.pad 該 直接執行,結束後,pad由5 1操作,變為6。3.pad,pad直接操作 動作,6 1,結果pad為7,該 執行結束。4.printf列印出7 su...

在c語言中int型別的陣列能夠用來存放字串嗎說

當然是可以的。不管是什麼樣的陣列,它在記憶體裡面都是一個位元組一個位元組儲存的。只不過,型別不同的話,取的時候取的位元組數不一樣。如果對於同一記憶體地址 void addr 0x12345678 進行下面不同的操作 char ch char addr 就從0x12345678取1個位元組 int i...