若有以下定義 int a1,2,3,4,5,

2021-03-12 18:49:03 字數 3193 閱讀 1447

1樓:紫臨

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; 則不能表示a陣列元素的表示式是( ) a) *p b)

2樓:墨汁諾

不能表示a陣列元素的表示式是( b) a[10] )----因為陣列a的最大下標只能是9,即a[9],

a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],一共10個元素。

a、*p  ---表示取p指標指向的單元的值,即表示取陣列a的首個元素a[0]的值。

b、a[10] ---因為陣列a一共10個元素,從0開始計數,

即a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],正好10個,沒有a[10],所以a[10]就是不能表達這個陣列元素。

c、*a ----陣列名a中儲存的是陣列的首地址,*是取單元中的值,*a就是取陣列首地址中單元中a[0]的值。

d、a[p-a] --- p指向的是陣列a,因為p中與a同資料相同都是陣列a的首地址,而p-a就等於0,因此 a[p-a]就相當於a[0]。

3樓:匿名使用者

選b)a[10] a[0]、a[1]、a[2]……a[9]分別是陣列a[10]的十個元素,故a[10]不能表示a陣列的元素。

4樓:匿名使用者

選 b a[10]

陣列是從a[0] 到 a[9] 的。。。。。。

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

5樓:匿名使用者

*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

6樓:匿名使用者

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

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

若有以下說明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則對陣列元素地址的正確表示是( )?

7樓:匿名使用者

編譯時 a &(a+1) 有問題, & 其實 是取地址操作6 30 c:\untitled1.c [error] lvalue required as unary '&' operand

b.a++ 也有問題

7 28 c:\untitled1.c [error] lvalue required as increment operand

c.&p 這個是表示 指標變數 p 的地址此題正確答案 是 d a+1,其實 是 陣列元素 a[1] 的地址,a[0] 的地址就是 a+0 就是 a

8樓:匿名使用者

陣列元素2的地址,可以用 a+1 表示。

應選d。

若有以下說明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則對陣列元素地址是

9樓:匿名使用者

你是想說用地址法輸出陣列的值麼,那你就得

版這權樣寫

void main()}

10樓:汝河金採珊

你是想抄說用地址法襲輸出陣列bai

的值du麼,那你就得

zhi這dao樣寫

12345678void main()}

c語言 int a[]={1,2,3,4,5,6,7,8,9,10},*p=a,則值為3的是

11樓:馮老師(必果學院

這bai是一個指

針求du值的問題,答案zhi應該是a

答案分析如dao下:

首專先,所有的逗號屬運算子,是從左向右進行的,其值為右邊結果計算的值

a p+=2,*(p++) 先計算p+=2 再計算*p 最後計算p++ 表示式的值在第二步計算確定的 為p[2] = a[2] = 3。表示式計算完畢之後,p指向4

b p+=2,*++p 先計算p+=2,再計算++p 最後計算*p 表示式的值在最後一步確定 為4

c p+=3,*p++ 先計算p+=3,再計算*p 最後計算++ 表示式的值在第二步確定為4,而後a[3]的值變為5

d p+=2,++*p先計算p+=2,再計算*p 最後計算++ 表示式的值在最後一步確定,為4,而後a[2]的值變為4

12樓:匿名使用者

答案a.

陣列定義是a[0]=1,a[1]=2,a[2]=3, ...,a[9]=10

a. p += 2使p指向a[2], *(p++)表示先取*p的值, 然後p增加版1(指向a[3]), 所以取權得的值是a[2]=3

b. p += 2使p指向a[2], *++p表示先p增加1(指向a[3]),然後取*p的值,所以是a[3]=4

c. p += 3使p指向a[3], *p++表示先取*p的值, 然後p增加1(指向a[4]), 所以取得的值是a[3]=4

d. p += 2使p指向a[2], ++*p對*p的值增加1, 所以取得的值是a[2]=a[2]+1=4

還有一種寫法是(*p)++, 表示先取*p的值, 這個值再增加1

若有如下定義,一下呼叫正確的是int a,p A scanfd ,a B scanfd ,p C sca

a.scanf需要提供變數地址,a不是地址 b.c.變數a的型別是int,用 f輸入會導致出錯 d.p的型別是指標 int 用 f輸入不行 若有說明 int p,a 1,b 以下正確的程式段是 這個,不在於 p b 還是 p a 關鍵是之前的語句 p b 也就是讓p指向了變數b,但是b中,沒有讓p指...

若有定義 int a 41,2,3,4,5,6,7,8,9,10,11,12p p a對陣列a元素的引用是正確的

a。a陣列的長度是3,p 4 和 p 4 都會造成超出地址範圍 p 2 表達不正確 p 2 3 是a 2 3 int p 4 表明p是行指bai針,即p指向二維陣列中的一du行。zhi p a 這一句表示 daop指向a 0 也就是 版指向a陣列第0行的第0個元素權 a 0 0 的地址。p 2 表示...

若有定義語句 int a 3,b 2,c 1,以下選項中錯誤的賦值表示式是

錯誤的是a 賦值只能賦給變數,不能賦給表示式 正確。賦值語句的物件只能是變數,而不是表示式。若換成a b 3,就對了。對於b,最後的值 a 2,b 2,c 1 對於c,整個語句是個賦值語句,裡面又巢狀了個b 4的賦值語句,所以,最後的結果是a 5,b 4,c 1 對於d,解法同c,a 5,b 4,c...