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