若有定義 int a2,4,6,8,

2021-04-18 21:59:27 字數 3578 閱讀 1264

1樓:匿名使用者

恭喜你 答對了,呵呵。其實這個問題你只需要在vc的編譯器上執行下就可以知道了,而且多動手寫程式可以調動積極性。

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

2樓:匿名使用者

*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

3樓:匿名使用者

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

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

c語言中int x=5 *p=&x *p+1的值

4樓:匿名使用者

c是指標變數,&p是表示其地址;而x未賦值,所以&(x+1)是錯誤的 if(x=y)中的x

5樓:匿名使用者

相當於:x+1;

結果為:x=6

6樓:好程式設計師

你寫錯了吧,感覺有點亂,你看看錯了嗎

若有定義:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a; ,( )對陣列a元素的引用是正確的。

7樓:處搖胼手胝足

a。a陣列的長度是3,*(p[4])和**(p+4)都會造成超出地址範圍

(**p)[2]表達不正確

*(p[2]+3) 是a[2][3];

8樓:匿名使用者

int (*p)[4];表明p是行指bai針,即p指向二維陣列中的一du行。zhi

p=a;這一句表示

daop指向a[0],也就是

版指向a陣列第0行的第0個元素權

(a[0][0])的地址。

p[2]表示p指向a陣列的第二行,即指向a[2]行,也就指向a[2][0]的地址。

p[2]+3表示行指標指向a陣列的第二行(從第0行開始),(從0開始)第3個元素,也就是a[2][3],*(p[2]+3)表示第2行,第3個元素的值。

p+4表示第四行(從0行開始),因為a陣列沒有第四行,所以是錯的。

p[4]表示第四行(從0行開始),原因同上。

*p表示a陣列第0行,第0列地址,**p表示a[0][0]的值,值不會再包含元素,所以(**p)[2]是錯的。

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

9樓:紫臨

p++的結果是a[3],也就du是4;但是p++本身的zhi值是a[2],即為3.

換句dao話說,p++後,p的值會加

版1,但是你在程權序里加一句n=p++,就可以看到n的值還是p。

a的意思應該是p++本身的值。

補充一點,如果是++p的話,值就是a[3]了。不管是p++還是++p,結果都會自增1,但是它本身的值要看加號在前還是在後。

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 則數值為9的表示式是

10樓:墨汁諾

選b記住這樣一抄

個無條襲件相等的等bai式:

*(p+i)與p[i]無條件等價。

因為p是指向陣列

dua首元素的地址,所以zhip[i]又和a[i]等價。

易知b選項dao即為p[8],也即為a[8],其值為9。

11樓:尚萌印蓮

選ap是a[0]的地址*p=*p+7:*p是8b選項的*(p+8)是p[8],值是9c是*p+8=a[0]+8=9d就是一個地址

12樓:人生如夢

記住這樣一個無條件相等的等式:

*(p+i)與p[i]無條件等價。

因為p是指向陣列a首元素的地址,所以p[i]又和a[i]等價。

易知b選項即為p[8],也即為a[8],其值為9。選b

13樓:匿名使用者

是這樣的!*p是一指標!指向a的首地址!

所以只有b)是正確的,c)會將指標指向一個不明區域而造成錯誤!

14樓:雪過了無痕

應該是p[8]和*p+8都可以吧

或者*(p+8)也應該對

說明語句如下:int a[10]={1,2,3,4,5,6,7,8,9},*p=a;則數值為6的表示式是( )。

15樓:匿名使用者

d。表示式「*p = a」說明p指向a[0]的位置;

那麼 *p + 6 = a[0] + 6 = 7; a錯;

p指向a[0]的位置, 則p + 6 指向a[6]的位置,那麼 *(p + 6) = a[6] = 7; b錯;

p是一個指標,p的值本身是一個地址,p + 5顯然不可能為5; c錯;

上面說了, p指向a[0]的位置,那麼 *p = a[0] = 1;

*p += 5; 等同於 a[0] += 5; 等同於 a[0] = a[0] + 5 = 1 + 5 = 6;

顯然只有d正確;

16樓:匿名使用者

d 一開始定義了 *p=a,就是指等於a[0];它指向的是一個值!

*p+=5,可以變換一下 *p=(*p)+5 不就 a[0]+5=6.....

a = 7 ;

b 的值是 a[6]=7

c 是一個地址 &a[5] 不是值!

17樓:林聲飄揚

da> *p+6=>1+6=7

b>*(p+6)=7

c>p+5 是地址

d>*p+5=>1+5=>6

所以選d

有定義:int a[10]={1,2,3,4,5,6,7,8,9,10};int *p=a;敘述該

18樓:莊政警

int a[10]=; //定義了

一個int型別的陣列a,有10個元素,並初始化int *p=a;//定義了一個指向int型別的指回針,並使該答

指標指向陣列a的第一個元素

*a是a[0],值是1

*(a+2)是a[2],值是3

p[3]是a[3] 值是4

*(p+5)是a[5],值是6

如果p=p+4,那麼p就是指向a[4]了,p[0]就是a[4],值就是5

大一C語言題目若有定義語句 int a

核心在於p的型別。定義等效於 int p 3 這裡p是一個陣列,包含三個元素,每個元素型別為int 所以a p為陣列名,不可以賦值。b p 0 為int 而a為二維陣列名,等效於int 型別不匹配。c a 1 2 為a的一個元素,型別是int,所以 a 1 2 是int 和p 0 型別相同,所以這個...

C語言 若有定義 int a 7 float x 2 5,y 4 7則表示式x a 3 int x y

按照加減乘除運演算法則及順序,還有結果轉換型別為float,結果為2.5 x a 3 int x y 2 4 x 1 7 2 4 x 1 4 x 若有定義 int a 7 float x 2.5,y 4.7 則表示式x a 3 int x y 2 4的值是 請詳細解答,非常感謝 答案為2.5.這個關...

若有定義inta21,2,3,4p則p1表示的陣列元素是

p 0 a 1 是將a 1 陣列的地址賦值給了p 0 為了更好的理解,我們定義一個int q q p 0 這樣 p 0 1 就等價於 q 1 了,由於q是int型的指標並指向的a 1 的第0個元素a 1 0 q 1就會指向a 1 0 的下一個元素了,也就是a 1 1 p 0 指向的是a 1 0 的地...