c語言若有下列說明和語句 int a 5pa則對a陣列元素

2021-03-29 15:40:31 字數 2229 閱讀 6329

1樓:匿名使用者

如果定義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)。

2樓:鍵盤未找到

a.表示&a[1].

b.a[3]

c.&a[1][3]

d.a[0][2]

3樓:匿名使用者

首先呢,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 呢就是第二個元素的地址,*取資料咯。

4樓:一方通通

本題中定義了一個二維陣列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]=a;則對陣列元素正確的引用時:a.p+1 b.*(p+3) c.*(p+1)+3 d.*(*p+2)

5樓:匿名使用者

教你個簡便的方法。

*(p+i)等價於p[i],反過來也成立。只要把答案試下就知道了。

取地址和顯示內容是兩個相反的操作,可以互相抵消的)

b. *(p+3)=p[3]=a[3]

d. *(*p+2)=*(*(p+0)+2)=*(p[0]+2)=p[0][2]=a[0][2]。選d

6樓:寂寞而莫我知也

d是對的.把a賦值給陣列指標,下標的引用是*(*(p+n)+n) 或者a[n][n] 說的很清楚了

7樓:匿名使用者

d是對的,選擇的是a[0][2],相當於*(*(p+0)+2)

若有定義:int a[5],*p=a; 則對a陣列元素地址正確引用的是( )。 &a[5] p+2 a++ &a 說詳細點謝謝

8樓:

應該是p+2與&a

&a[5]越界,a++語法錯誤,陣列名可看作一個指標常量,不可修改

若有定義:int a[10],*p=a,則*(p+5)表示()

9樓:李修炎

選a ,因為*p=a,這時是把陣列a的首地址傳給了指標p,而陣列的定義是從a[0]開始的,所以p+5表示的是元素a[5]的地址,希望你現在明白了

10樓:匿名使用者

b*(p+5)表示p+5這個地址指向抄單元內容,當然是int的,所以不是地址

p=a;的賦值後,p存放的地址就是陣列起始地址也就是陣列元素a[0]的地址,*p可以寫成*(p+0),p[0],相當於a[0]

*(p+5)相當於p[5],a[5],即變數a[5]的內容所以應當選擇b

11樓:艾薩克

b既然有p = a

那麼 *(p + 5) p[5] *(a + 5) a[5] 都是一樣的

C語言int和float有什麼差別

void 宣告函式無返回值或無引數,宣告無型別指標,顯式丟棄運算結果 char 字元型型別資料,屬於整型資料的一種 int 整型資料,通常為編譯器指定的機器字長 float 單精度浮點型資料,屬於浮點資料的一種 double 雙精度浮點型資料,屬於浮點資料的一種 型別說明符 位元組 數值範圍 字元型...

c語言中的for語句和ni語句,C語言中的for語句和n i 語句

n 這種形式是字尾自增1運算,表示先使用n值,然後n n 1自增1 i這種形式是字首自增1運算,表示先對i進行i i 1自增1,然後再使用i值 如果是單獨執行這樣的語句,兩者沒有區別,如 for i 0 i 輸出0 9 與for n 0 n 輸出0 9 這兩者都會迴圈10次,沒有差別。而下面的語句 ...

c語言若int型別佔兩個位元組,則以下語句輸出為

u 是無符號數,即只有正的。1的原碼取為反碼是65535。2個位元組是16位,取值範圍是0到65535。應該是printf d,u n k,k 選dk你應該賦值了 1,以 d格式自然輸出是 1 關鍵是 u以無符號整型資料輸出,1在記憶體中是以補碼的形式存放的,佔兩個位元組,1的補碼為11.11 16...