若有定義int a 21,2,3,4p 3 1則 p 1 表示的陣列元素是

2021-03-28 03:07:21 字數 4286 閱讀 1823

1樓:德克and德華

arr[n]等價於*(arr+n)

因為p[0]=a[1],所以*(p[0]+1)相當於*(a[1]+1),等價於a[1][1](把a[1]看成是上式的arr即可)

.若有以下定義和語句則++(*p)的值是___3__。這個答案為什麼不是2

2樓:

p=&a[2], p指向了a的下標為2的元素,c語言的陣列下標是從0開始的,下標為2指的是第三個元素,2,++(*p)將該元素增加1,2+1=3

3樓:藍色回憶殘月

int a[4]=,*p;

p=&a[2]=2;

再執行(*p)=2;

之後++(*p)=3;

4樓:支瑜應文瑞

a因為p+=2

是p=0+2

,指的是陣列中的第二個元素。而*(p++)是p+1

,*(p++)表示第三個元素的值。故選a。

c語言 定義則執行y=(*--p)++後,y的值是

5樓:

這好解釋啊,因為++是後++,要等到把(*--p)的值賦給y後(*--p)的值才會增1。所以結果是y=1,a[0]=2。你可以用下面的**驗證:

int main(void),y,*p=&a[1];

y=(*--p)++;

printf("%d %d\n",y,a[0]);

return 0;}

知int a[]={1,2,3,4,5,6},*p=a+2;則p[2]的值是( c )。

6樓:匿名使用者

a+0指向1,a+1指向2,a+2指向3,*p=a+2;那麼p指向3,p[2]就是p+2指向的資料

p+0指向3,p+1指向4,p+2指向5,所以p[2]的值是5

設有變數定義 int a[3][2]={1,2,3,4,5,6}, (*p)[2]=a;表示式**(p+2)=*p[2]的值?

7樓:潘良段幹宛菡

(*p)[2]=a表示來

將p定義為乙個指向自

含2個元素的一維陣列的指標變數,那麼二維陣列就可以看作是一維陣列a[3],其中每乙個元素都是乙個一維陣列,a[1]=,a[2]=,a[3]=;

則p+2就指向了a[3],*(p+2)是a[3]的首位址,**(p+2)就是a[3]的首元素,即為5。

8樓:匿名使用者

**(p+2),*p[2]這兩個表示式是等價的,當然,**(p+2)=*p[2]是乙個賦值表示式,最終的值還是a[2][0],即5

9樓:匿名使用者

作用是:a[2][0]被 a[0][2]也就是a[1][0]賦值

10樓:匿名使用者

**(p+2)的值為5

已知:int a[]={1,2,3,4}, y, *p=a;則執行語句y = (*++p)--;之後, 陣列a各元素的值變為?

11樓:匿名使用者

已知int a=, y, *p=a;則執行來語句y = (*++p)--;之後自, 陣列a各元素的值變為1,1,3,4 。

標準函式int(x)其基本功能是得到乙個不大於x的最大整數,如int(3.59)=3,int(-2.01)=-3。

int函式是乙個用途很廣的函式,在教學中能有目的的分列其使用技巧。

c語言沒有規定各種整數型別的表示範圍,也就是說,沒有規定各種整數的二進位制編碼長度,對於int和long。

12樓:

b正確,選b。++p使p指向了2,*++p就是a[1],(*++p)--就是a[1]--。變數y的值是2,y=a[1]--;是把a[1]的值賦給y後才對a[1]作減一運算。

13樓:匿名使用者

執行過程是p++,然後y=*p;然後(*p)--。

即p的指標位增加一,然後賦值,最後指標對應值減一,即y=a[1],然後a[1]=a[1]-1;

綜上答案是b、b

14樓:匿名使用者

先++p,p指向a[1],

再*p,=2;

賦給y,y=2;

最後*p=2,--後,*p=1

所以是b b

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

15樓:匿名使用者

*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

16樓:匿名使用者

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

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

若有定義:int a[3][4],(*p)[4]=a;要引用a[2][3]用(c)

17樓:匿名使用者

我倒,你這個是選擇題,對吧!看了三遍才看懂題意.

解:int a[3][4]; 定意乙個二維陣列(*p)[4]=a;這裡就是定義p為指向包含4個元素的一維陣列的指標變數,那麼,你試想一下,二維陣列在記憶體中存放的形式是怎麼樣的? a賦給(*p)[4], a就是a[0][0]的位址, a就是指向零行首列位址的,它的趨勢是指向行的,a+1就是指向一行首列的位址,a+2就是指向2行首列的位址,那麼*(a+2)它也是指向2行零列的位址, 它的趨勢是指向列的,那麼*(a+2)+0與*(a+2)是指向同乙個位址,*(a+2)+1就是指向2行1列的位址,*(a+2)+3就是指向2行3列的位址,*(*(a+2)+3)就是a[2][3]

*(p+2)是不是指向二行首行的位址呢? *(p+2)+3是不是指向二行三列的位址呢? 那麼*(*(p+2)+3)就是a[2][3]

18樓:

p是乙個指標陣列, 開始時,p指向a[2][4]的首位址(或者a[0][4]的位址),p+1時,指標前移乙個單位(即前移乙個a[4]大小的位元組),也就是移到a[1][4]的首位址,同理,p+2時,它移到a[2][4]的首址,因為要引用a[2][3]的值,所以取指標值*(p+2),此時*(p+2)是乙個一維陣列,即是a[2][0]行標的那行(把二維陣列看成是個矩陳吧,所以是取a[2]這行),

所以直接(*(p+2))[3]就是a[2][3]的值了,換成指標模式就是*(*(p+2)+3)

不知樓主可看得明白,發覺這個問題文字表達自己表達不出自己想說的!

int a[5]={1,2,3},*p=a;則*(p+1)的值是2 求解釋

19樓:匿名使用者

int a[5]=陣列抄在記憶體中申請了五個襲連續的位址,假設是五個方框吧□□□□□,依次存放了1,2,3,0,0;

*p=a;定義了乙個指標,指向a陣列的首位址,也就是第乙個方框,p+1,就是指向第二個方框。*(p+1)就是取p+1個方框內的資料,據上面分析,我們可知它是2.

20樓:匿名使用者

inta[5]=,i//定義

baiduint陣列a->5個連續的int儲存空間zhi首位址dao,按順序內

值為1,2,3,4,5;int*p=a;//定義int指標,並初始化值為a,指向容陣列首位址p+=2;//指標按int型別方式向下偏移2位,指向從a[0]->a[2],值從1->3for(i=0;i==0;i++)//for迴圈i初值為0(迴圈入口),迴圈判斷為i==0(每次迴圈前),i++為迴圈增量(每次迴圈後)cout<<*(p+2);//向cout流輸出*(p+2)的值,預設為std終端,p+2同上,指向a[4],*(p+2)為指向位址值為5。該迴圈一次後中斷

21樓:夏夜風襲

p 的值是 a 的位址,運算子 * 是定址,*(p+1) 就是 a[1] ,即為 2

C語言若有定義 int a 1,b 2,c 3則語句 a丨丨 bc,執行後b的值為多少

2,或運算只需乙個滿足就行 a 2不等於0個,故或運算結果為一,b運算沒得到執行 a 算得結果是邏輯真,跟後面的部分進行邏輯或運算,不管後面的部分算得結果是真還是假,最終結果都是趙,所以後面的部分就不算了。所以運算後 b 的值還是 2。同理,c 的值還是 3。c語言,若有定義 int a 1,b 2...

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

a錯了,不能將3賦值給表示式,b 4已經是個表示式了,既然是表示式就只有真假 即0和1 基礎知識要看仔細點 a錯了,原式 a 4 3,明顯錯誤 a肯定是錯的 變數a是整型,b 4 3這個表示式是bool,所以出錯。a放到程式裡一試就式出來了,只有a報錯,其他的都能通過 若有定義語句 int a 3,...

若有定義語句 int a則下列語句正確的是

答案是bai c 解決這類題型du 首先要分清型別。zhi a錯,雖然 p 的型別是 dao int a 的型別是 int 但是陣列專名代表的屬位址也不能改變。b錯,因為 p 0 的型別是 int a 的型別是 int c對,p 0 的型別是 int a 1 2 的型別也是 int d錯,p 1 的...