有以下說明和語句,int a 4pa,i,j pa p如果0i4,0j

2021-05-22 02:24:15 字數 3633 閱讀 2376

1樓:

d的三項都是地址,所以選d。

a——&a[j]是地址的地址、&p[i]是地址的地址、*(*(pa+i)+j)是元素值

b——pa[i][j]是元素值

c——**pa是元素值。

2樓:匿名使用者

其實在源c中p[i]等價於*(p+i),陣列表示法只是一種簡寫.p[i][j]等價於(*(p+i))[j]==*(*(p+i)+j)你也可以反著寫:p[n]==n[p]因為*(p+n)==*(n+p)你執行了p=a;因此p的值等於a的值.

所以p[i][j]==a[i][j]你的理解是正確的.

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

3樓:

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

4樓:藍色回憶殘月

int a[4]=,*p;

p=&a[2]=2;

再執行(*p)=2;

之後++(*p)=3;

5樓:支瑜應文瑞

a因為p+=2

是p=0+2

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

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

c語言若有下列說明和語句:int a[4][5], (*p)[5]; p = a; 則對a陣列元素

6樓:匿名使用者

如果定義int (*p)[n];p1=a;p1++後,p指向a[1][0];

則p+j將指向a[0]陣列中的元素a[0][j]。

由於a[0]、a[1]┅a[m-1]等各個行陣列依次連續儲存,則對於a陣列中的任一元素a[i][j],指標的一般形式如下:

p+i*n+j,相應的如果用p來表示,則為*(p+i)+j;

元素a[i][j]相應的指標表示為:

*( p+i*n+j) ,相應的如果用p1來表示,則為*(*(p+i)+j)。

推出以下的等價關係:

a+i == p+i;

a[i] == p[i] == *(a+i) == *(p+i);

a[i][j] == p[i][j] == *(a[i]+j) == *(p[i]+j) == *(*(a+i)+j) == *(*(p+i)+j)。

7樓:鍵盤未找到

a.表示&a[1].

b.a[3]

c.&a[1][3]

d.a[0][2]

8樓:匿名使用者

首先呢,a是二維陣列,不解釋。

然後呢,p是一個指標,什麼樣的指標呢,就是指向一維陣列的指標,而且這個一維陣列的元素個數呢是5.

然後呢,p=a;就是把p指向a陣列。

分析選項:

a p+1 .因為p是一維陣列指標,所以p每+1就是+1行。錯誤。

b *(p+3)是指第4行的首地址,訪問不到元素。需要再*c *(p+1) + 3 對地址+3 沒啦意義d *(*p+2) *p是第0行首地址 +2 呢就是第二個元素的地址,*取資料咯。

9樓:一方通通

本題中定義了一個二維陣列c和一個陣列指標p並初始化讓它指向c,顯然此時p中的各元素為地址,

a中p+1,此時的1代表的長度是整個二維陣列c的長度,p+1將讓p指向c陣列後面的元素,故不能引用c陣列中的成員,故選項a錯誤;同理,選項b和選項c都不正確,

d中p[0]+2代表的是第一行第三個元素的地址,而*(p[0]+2)將代表第一行第三個元素的值。

c語言中 int a[12]={0},*p[3],**pp,i; for (i=0;i<3;i) p[i]=&a[i*4]; pp=p;誰幫我解釋一下是什麼意思啊?

10樓:熾熱紅翼

int a[12]=, 陣列a包含12個元素,全為0*p[3], 指標陣列

**p,i; 指向指標的指標和變數i

for(i=0;i<3;i)應該為for(i=0;i<3;++i) 迴圈

p[i]=&a[i*4]; 意思是p[i]的值為a[i*4]的地址,這裡p[i]是指標

也就是p[0]指向a[0]地址

p[1]指向a[4]地址

p[2]指向a[8]地址

pp=p;pp指向指標陣列p的地址 pp是指向指標的指標,p是指標陣列,所以p也是指向指標的指標,可以pp=p

int a[3][4]; int **p; p=a; 合法嗎

11樓:匿名使用者

嗯,不合法,第一:二級指標不能直接指向a,因為型別不同.第二:指標指向二維陣列的方法不對。

如果要改可以這樣改用一下(3)的方法會更簡單,也是用的比較多的

給你說說常見指標和陣列的用法吧,都很基礎,不過還是有難度的,,不需要一下子全部弄懂,學到一定程度後再回來看看就很容易了:

(1)一般指標指向一維陣列:例:int *p,a[3]; ,讓p指向a陣列的方法為:p=a;(或p=&a[0]),指向第i個元素的方法是:p+i;

(2)一般指標指向二維陣列:例:int *p,a[3][4]; ,讓p指向二維陣列a的方法為:p=a[0];,指向陣列第i行第j列元素的表示方法是p+i*4+j;

(3)陣列指標指向二維陣列:例:int (*p)[4],a[3][4];,指標指向二維陣列的方法是:p=a;,指向陣列第i行第j列元素的表示方法是:*(p+i)+j;

(4)指標陣列指向二維陣列:例:int *p[3],a[3][4];,指標指向二維陣列的方法是:p[3]=;,指向陣列第i行第j列元素的表示方法是:p[i]+j;

(5)二級指標和一級指標的用法差不多,模糊點的說,只是二級指標使用時必須要先指向一級指標,不能直接指向某個變數(或陣列);

12樓:匿名使用者

不合法a的型別是int(*)[4],p的型別是int**,型別不同,不合法(可能有老舊的編譯器能通過,目前的主流編譯器肯定是會報錯的)

int (*p)[4]; p=a; // 這樣就可以

13樓:匿名使用者

int ia[3][4]=,,}

int (*ip)[4]=ia;//定義一個指標ip,它指向一個含有四個元素的陣列。此時,ia指向二維陣列的第一個元素(也就是第一行),ip指向第一行的第一個元素。原因就是使用陣列名時,會自動轉換成指向陣列第一個元素的指標。

由於解引用操作符的優先順序底於下標操作符,所以要加括號

14樓:小g刀

*p=a合法

a指向陣列第一個元素

**p就能取出第一個元素的值

若有定義語句:int a[4][10],*p,*q[4];且0≤i<4,則錯誤的賦值是

15樓:匿名使用者

錯誤的是a

a相當於 **a

很顯然,p是指標;a是指向指標的指標。

兩個無法賦值。

執行以下語句後a的值為b的值為int a 5,b 6,w 1,x 2,y 3,z 4a wxb yz

先執行a w x 應為wz不執行,b還是初始值6 程式首bai先計算a w x,這裡由於duw 1,x 2,所以zhiw x為假 dao,假用0來表示,所以a 0 由於是 操作,這裡有一個內 短路 即比容如a b的話,如果a為假的話,那麼b就不計算了,可以直接得到 表示式的結果了.這裡由於後半個式子...

c語言程式設計inta和inta有區別嗎

int a是定義一個整型指標變數a。int a 沒有這種寫法。int a 1 定義a是一個陣列。2 每一個陣列的元素是一個指標,指向一個整數。int a 將指標變數a強制轉換為整型指標,說明a一般不是一個整型指標,也可以是個整型指標。int a 1 定義a是一種指標。2 a指向一種整數陣列。陣列的建...

想問問各位以下的英語句子裡有幾個從句,大家是怎麼看到?我不想迷信參考書,我的觀點和參考書不同

應該是有兩個從句吧!what it was to become主語從句when the dust settled into a solid globe.時間狀語從句 我覺得看一個句子有多少個從句,數一下句子裡版面有多少個謂權語動詞就好了,通常一個句子都只有一個謂語動詞,當一個句子的謂語動詞有兩個或三...