若有定義「int a 51,2,3,4,5p a則以下表示式中值為3的是A a Bp 2 C p 2 D a

2021-04-18 17:29:13 字數 2806 閱讀 8944

1樓:匿名使用者

c.*p+2

沒有乙個是指向a[2]的,但c的結果是1+2=3

若已定義:int a[5]={0,1,2,3,4},*p=a,則以下輸出結果為3的是()

2樓:自我程式設計

選b。p[3]等同與a[3]。

陣列的名字a,是表示陣列首位址的位址常量。其值就是&a[0];

*p=a;那麼p的值也是內&a[0];

p和a都表示位址容,所以*就是取位址對應的值。

(a+2)就是首位址值往後+2的位址,也就是&a[2],那麼*(a+2)就是a[2]的值2。

同理*(p+2)也是a[2]的值2。

*p[3]是不對的,p[3]不是位址是值。

注意:這裡p和a值一樣,但意義不同。p是指標值可以改變,a是常量不能改變其值。

所以p++可以,a++不行。

3樓:劉淘冬

概念:

這裡的*是指標的識別符號,*p就代表p是乙個指標。

*p=a,完整的寫法應該內是,int *p=a;*代表p是乙個指標,int 是指標p指向的容資料型別是int型,即整型。

因為p是指標,p=a,也就是p獲取了a的起始位址(不懂可以看看指標的定義)

*p可以理解為把指標p指向的位址裡面的數字表示出來,這裡p指向a的初始位址,a的初始位址裡放的是0,所以*p就是0,p[1]表示在p的位址上加1,因為p指向a的初始位址,也就相當於就是a的位址上加一,是a[1],所以*p[1]就是1,所以*p[3]就是3,很明顯選d

4樓:c語言基礎

&:取位址符

*:間接運算子

&變數:取變數的位址

指標[下表]等效陣列名[下表]等效 *(指標+下表)綜上所述:答案選b

有定義inta[5]={1,2,3,4,5},如有int*p=a,則*p的值,*(p+2)的值

5樓:八千漢字

*p = a[0], *a ,*(a+0) , p[0] 都是 陣列的第乙個元素1

*(p+2),*(a+2),a[2],p[2],都是 陣列的第三個元素 3

a 和 p 的差別就是 a指標是常量 無法做改變指標值,p是變數

6樓:匿名使用者

int *p=a.的意思是 *p=a[0] *(p+2)=a[2]

20懸賞!!**等!若有以下定義:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 則值為3的是( ) 20

7樓:匿名使用者

*p=a,陣列名表

bai示位址,該

du句話的意思就是p=&a[0],p+=2表示p=&a[2];

接下zhi來我們看看* ++的優dao先級版,兩個優先順序是一樣的,屬於右權結合。*(p++)首先計算p++,由於++在後面,所以*(p++)相當於計算*p,然後p++;所以a和c相同,至於d ++*p表示++(*p),將*p的值++。我不知道樓主用的什麼編譯器。

對於我的理解,如果是printf(「%d」,*(p++))這種樣式輸出的話,a 輸出是3,b輸出是4,c輸出的是4,d輸出是4

8樓:匿名使用者

應該是a,*(p++)和*p++是一樣的,都是先算p++【為p】然後算* 符【為*p=3】最後p自加

這是* 和++的右結合性。

已知:int a[]={1,2,3,4,5,6},*p=a;下面表示式中p值為5的是___ ___。

9樓:聽不清啊

表示式中 *p 值為5的是___ (a)p+=3;*(p++); ___。

10樓:匿名使用者

(a)p+=3;*(p++);

int a[3][2] = { 1,2,3,4,5,6 }, (*p)[2]; p = a; printf("%d\n",a); printf("%d,%d",*a,*a[0]); } 50

11樓:匿名使用者

二維陣列

可以當成每個

元素都是乙個陣列的一維陣列

比如a[3][2] 可以當作乙個一維陣列a[3], 但是a[3]的每個元素回都是答乙個一維陣列..

那麼就好理解了 *a是a[0],但是a[0]自身是乙個一維陣列,並不是乙個數

所以*a[0], 或者**a 才是這個一維陣列的首個元素的值

12樓:匿名使用者

二維陣列的首位址是

來二級自指標,二級指標就是指bai針的指標,du意思就是乙個指標指向了另一

zhi個指標。

假如:int **b , *a; b = &a; 所以dao*b中存放的是指標a指向的位址值, b就是a的位址值。

所以這裡的**a 和*a就是這個道理。這裡*a就是第一行首位址的位址值

13樓:哥德**的憂鬱

a是乙個二維陣列的首地抄址,*a是對a相當於進行了一次降維,所以*a是一維陣列的首位址,也就是a[0],這麼說吧你可以把a[3][2]看成這樣子, },所以a指向的是這一整個陣列,*a指向才是陣列裡的乙個元素,所以再對*a進行*運算,也就是**a,才會是第一元素的值,如果不懂歡迎追問哦。

14樓:育知同創教育

二維陣列不應該是**a才能取到1嗎?

15樓:王子易

你這什麼,題目看不懂

若有定義 Int a 10p a,則 p 5 表示()

選a 因為 p a,這時是把陣列a的首位址傳給了指標p,而陣列的定義是從a 0 開始的,所以p 5表示的是元素a 5 的位址,希望你現在明白了 b p 5 表示p 5這個位址指向抄單元內容,當然是int的,所以不是位址 p a 的賦值後,p存放的位址就是陣列起始位址也就是陣列元素a 0 的位址,p可...

若定義陣列inta1,2,3,4,5,6則此陣列元素a

a 2 3 陣列中第三個元素 a a 2 a 3 4 陣列中第四個元素 int a 值 1 2 3 4 5 6下標 0 1 2 3 4 5計算a a 2 分兩步,先計算a 2 那麼a 2 對應的值是3,接著,計算a 3 4答案就是4了 實際上你可以看成是,int temp a 2 然後求 a tem...

若有定義 int a,b則表示式 a 2,b 5,a

b 的意思是 先將b的原值帶入本條語句執行,然後再自加,這裡本條語句為b 即什麼也不做,然後自加 如果換成c a b 則c 7 而不是8 float a b 2 得到浮點數2.5 int x int y,因為把x,y強制裝換為其實就是3墨2得到int數1 結果是3.5 先掃瞄逗號表示式 結果是8 3...