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...