有說明語句int a 3表示什麼意思

時間 2021-09-03 01:11:38

1樓:薔祀

有說明語句int a[4][5];,則a[2]+3表示正確引用a[1][3]。

由題意可知a[2][4]已經越界。

最後一個元素a[2][3] 引用時下標從0開始,

第一行a[0][0] a[0][1]...

第三行a[2][0] a[2][1]...

所以最後求解出來a[2]+3表示正確引用a[1][3]。

擴充套件資料

陣列元素的編寫方法:

let myarray=[11,22,33];

console.log('原陣列:',myarray);

myarray.push(44,55);

console.log('用push在陣列後面插入元素:',myarray);

myarray.unshift(66,77);

console.log('用unshift在陣列前面插入元素:',myarray);

myarray.splice(2,0,'碼');

console.log('用splice在陣列指定位置插入元素:',myarray);

通過使用push以及unshift即可向陣列插入元素,如果要在指定的位置插入元素則可以用splice,splice接收多個引數,分別是索引,要刪除的元素個數,新加的元素(可多個,用逗號隔開);

2樓:匿名使用者

int a[4][5],陣列是4行5列的,行下標為0~3,列下標為0~4

a[4][5] :越界了

*(*(a+2)+3):這個表示a[2][3](*(a+2))[3] :這個表示a[2][3]*(a+2)[3]:越界了

3樓:匿名使用者

#include

int main()

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

}輸出結果是0,我試過了!

4樓:匿名使用者

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

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

5樓:匿名使用者

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

6樓:鍵盤未找到

a.表示&a[1].

b.a[3]

c.&a[1][3]

d.a[0][2]

7樓:匿名使用者

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

8樓:一方通通

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

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

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

12. 若有說明:int a[][3]={1,2,3,4,5,6,7};則陣列a第一維的大小是( )。

9樓:格子裡兮

若有說明:int a[3]=;則陣列a第一維的大小是3。

int a:第一個中括號表示有此二維陣列有幾行,第二個表示有幾列。

故int a[3]=;說明此陣列有n行,3列;也就是說每行有三個元素,所以第一行有1,2,3 這三個元素,第二行有4,5,6三個元素,第三行有7這個元素,不足的兩個元素由0來補足。

對陣列進行初始化,要麼兩個維度都不寫,由賦值的陣列確定,或者第二維可以不寫,第一維要寫,再由賦值陣列確定。

陣列中的下標是從 0 開始的(而不是 1)。那麼,如何通過下標表示每個陣列元素的呢?通過“陣列名[下標]”的方式。

例如“int a[5];”表示定義了有 5 個元素的陣列 a,這 5 個元素分別為 a[0]、a[1]、a[2]、a[3]、a[4]。其中 a[0]、a[1]、a[2]、a[3]、a[4] 分別表示這 5 個元素的變數名。

如果從 1 開始,那麼陣列的第 5 個元素就是 a[5],而定義陣列時是 int a[5],兩個都是 a[5] 就容易產生混淆。而下標從 0 開始就不存在這個問題了!所以定義一個陣列 a[n],那麼這個陣列中元素最大的下標是 n–1;而元素 a[i] 表示陣列 a 中第 i+1 個元素。

另外,方括號中的常量表示式可以是“數字常量表示式”,也可以是“符號常量表示式”。但不管是什麼表示式,必須是常量,絕對不能是變數。

c 語言不允許對陣列的長度進行動態定義,換句話說,陣列的大小不依賴程式執行過程中變數的值。非通常的情況為動態記憶體分配,此種情況下陣列的長度就可以動態定義。

10樓:匿名使用者

int a;第一個中括號表

示有此二維陣列有幾行,第二個表示有幾列;

故int a[3]=;說明此陣列有n行,3列;也就是說每行有三個元素,所以第一行有1,2,3 這三個元素,第二行有4,5,6三個元素,第三行有7這個元素,不足的兩個元素由0來補足

故此定義下陣列a第一維的大小是3

11樓:匿名使用者

若有說明int a[3][4];則對a陣列元素的正確引用是 a[1][3]。a[2][4]越界了最後一個元素a[2][3] 引用時下標從0開始第一行a[0][0] a[0][1]。

。。第三行a[2][0] a[2][1]。。。程式1。

//定義為區域性性質的陣列#include void main() printf("

");}。

12樓:匿名使用者

3,除錯一下就知道了

若有說明語句:int a[6]={1,2,3,4,5,6};則a[3]的值為?

13樓:星月明

1、a[3]=4; 注意陣列下標一般從0開始;

2、a. 對陣列進行初始化,要麼兩個維度都不寫,由內賦值的陣列確容定,或者第二維可以不寫,第一維要寫,再由賦值陣列確定;故b、d錯;c中的是一個元素;

單選題】若有說明:int a[5]; ,則下面不可以給5個陣列元素賦值的是( ) a a={1,2,3,

14樓:荷z06d郄

int a[4][5],陣列是4行5列的,行下標為0~3,列下標為0~4

a[4][5] :越界

了*(*(a+2)+3):這個表示a[2][3](*(a+2))[3] :這個表示a[2][3]*(a+2)[3]:越界了

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

15樓:勾竹劇庚

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

16樓:

(*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) ); // 列印所有陣列元素的值。

17樓:匿名使用者

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) );

18樓:匿名使用者

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

19樓:匿名使用者

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

若有說明int a[3][4];則對a陣列元素的正確引用是

20樓:達豐

二維陣列

引用基本格式:陣列名[行標][列標]。

行標和列標都是從0開始,最大下內標為行(列)標長度-1。

比如:容a[0][1],表示第一行第二列的陣列元素。

二維陣列:

由行和列組成的二維**形式的元素,其實也就是矩陣。

基本格式:

資料型別 陣列名[行長度][列長度];

行長度為二維陣列行的個數,必須為常量表示式,不能為變數。

列長度為二維陣列每一行列的個數,必須為常量表示式,不能為變數。

二維陣列包含的元素的個數是:行長度*列長度,其中每個元素佔據的位元組數是sizeof(資料型別),故二維陣列佔據的內在位元組數是 行長度*列長度*sizeof(資料型別)。

舉例:定義一個二維陣列a,包含4行4列的元素,每個元素均為int型別int a[4][4];

設有語句int a 3,執行語句a a a a後,變數a的值是多少啊

墨汁諾 從右往左左運算,a a 36,執行語句a a 36,得到值 30,然後執行語句a a 30,得到值 60。賦值語句,從右到左依次執行 int a 3 a a a a 相當於 a a a a a 然後相當於 a a a a a a a 由於a初始化為3 a a a a 3 3 3 6 a a ...

為什麼int a3和int a3不能正確二維陣列

嘿嘿 你這樣定義的話 編譯器無法識別第一位的個數 陳學陽 int a 3 2 這個語句語法是錯的,錯在二維陣列的初始化。初始化值要放在花括號裡。int a 3 二維陣列宣告,其中一維大小不定。陣列的初始化不要求全部元素都賦值,所以 int a 3 初始化 a 0 0 等於6 int a 3 初始化 ...

3a 5a可以表示什麼實際意

3a 5a可以表示為質量 或數量 為3a的物品是質量 或數量 為5 的物品的幾分之幾 或多少倍 區分麵粉的等級 5a為最高階。麵粉等級分類 特製一等粉 富強粉 精粉 相當於前蘇聯一等粉,質量比國外的特等粉差,我國單獨生產特製一等粉的出粉率為60 70 它適宜製作精度較高的麵包 饅頭 麵條 包子等面製...