若有定義語句int a 5p a,則對a陣列元素的正確引用是什麼Aa B a 2 Cp 5 Da

2021-04-18 03:48:43 字數 3334 閱讀 4050

1樓:聽不清啊

正確答案是:d

*&a[5]就是a[5],下標越界了

*a就是a[0],a[0]+2不是對陣列元素的正確引用同理,*(p+5)就是a[5],下標越界了而* (a+2)就是a[2]

2樓:及時澍雨

若定義int a[5],*p=a;

則a選項

抄中,*&a[5],

&a[5]是a[5]的地

bai址,

*&a[5]是a[5]本身

但數列中沒有a[5]這個du元素,錯誤zhi。

*與&為逆運算

b選項dao中*a+2

*a為a[0]

則*a+2為a[0]+2,不是a[2],錯誤c選項中*(p+5)

p+5=a+5為a[5]的地址

*(p+5)為a[5],

如同a中,數列中沒有a[5]這個元素,錯誤。

d選項中,*(a+2)

a+2為a[2]的地址

*(a+2) ==a[2]與a[2]等同選d

3樓:匿名使用者

*p=a只是一種格式,相當於p=a,所以選d

4樓:匿名使用者

應該選d

a 是陣列第一個元素的地址,a+2 是第三個元素的地址。

*(a+2) 即為第三個元素。

5樓:認不倒你

選dint a[5]只有a[0]~a[4]

無a[5];

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)將代表第一行第三個元素的值。

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

10樓:勾竹劇庚

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

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

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

分析選項:

ap+1

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

b*(p+3)是指第4行的首地址,訪問不到元素。需要再*c*(p+1)+3

對地址+3

沒啦意義

d*(*p+2)

*p是第0行首地址

+2呢就是第二個元素的地址,*取資料咯。

11樓:

(*p)[5]; -- (*p) 是一個指標,抄(*p)[5] 用來指向有5個元素的陣列。

p=a; 就是 p=&a[0]; 指向a 的第一行的開始(如果是 p=&a[1]; 指向a 的第2行的開始)

語句裡 (*p) 是 第一行的開始

*(*p+2) 裡的 *p+2 是 第一行裡的第3個元素的地址,*(*p+2) 是該元素的值

int a[4][5]=;

int (*p)[5];

int i,j;

p = &a[0];

printf("*p= %d \n", *p ); // 列印地址

for (i=0;i<20;i++) printf("%d ", *(*p+i) ); // 列印所有陣列元素的值。

12樓:匿名使用者

p)[5]; -- (*p) 是一bai個指標,(*p)[5] 用來指向有du5個元素的陣列zhi

。p=a; 就是 p=&a[0]; 指向a 的第dao一行的開始內(如果是 p=&a[1]; 指向a 的第2行的開始)

語句裡容 (*p) 是 第一行的開始

*(*p+2) 裡的 *p+2 是 第一行裡的第3個元素的地址,*(*p+2) 是該元素的值

int a[4][5]=;

int (*p)[5];

int i,j;

p = &a[0];

printf("*p= %d \n", *p );

for (i=0;i<20;i++) printf("%d ", *(*p+i) );

13樓:匿名使用者

此題很簡單的,你只要明白a是二維陣列就好了,所以要訪問裡面元素必定有兩個*號,三維,四維依次類推

14樓:匿名使用者

*(*p+2) a[1][2]

C語言若有定義語句 int a 41,3,5,7p p a則 p 1 的值

p 1 3 樓主追問 char s 10 則strlen s 的值為strlen是計算字串長度,遇到 0 結束返回長度,所以是則表示式pn b n.a pn b的值是 pn結構體指標指向結構體n,n被初始化成 pn b n.a pn b pn b pn b 1 pn b n.a pn b 1 3 1...

若有定義語句 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...

設有inta 2,b 1,p a則執行語句p 3 a a b後,變數a的值為

int a 2,b 1,p a p 3 因為指標指向a,所以此時相當於a 3a a b a 3 1 所以a 4 4。最後a的值是4。已知 int a 1,2,3,4 y,p a 則執行語句y p 之後,陣列a各元素的值變為?已知int a y,p a 則執行來語句y p 之後自,陣列a各元素的值變為...