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