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+1 &a[1] &a[1][0]*(p+3) &a[3] &a[3][0]*(p+1)+3 &a[1][3]
*(*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的值是
假面 設有語句int a 3 則執行了語句a a a a 後,變數a的值是 12。先算a a 9 再算a 9 這樣a 6 再算a 6 就是a 6 6 12 任何乙個表示式的最後加乙個分號都可以成為乙個語句。乙個語句必須在最後出現分號。表示式能構成語句是c和c 語言的乙個重要特色。c 程式中大多數語句...
為什麼int a3和int a3不能正確二維陣列
嘿嘿 你這樣定義的話 編譯器無法識別第一位的個數 陳學陽 int a 3 2 這個語句語法是錯的,錯在二維陣列的初始化。初始化值要放在花括號裡。int a 3 二維陣列宣告,其中一維大小不定。陣列的初始化不要求全部元素都賦值,所以 int a 3 初始化 a 0 0 等於6 int a 3 初始化 ...
繡裡說明9格布用4股線繡,3股線勾邊什麼意思
土豆遇見熊 二股線就是取一支繡線 就是一大股線有六根線的 中的一根,對折後穿針.或抽出2根穿針後不對折,針後留活結.三股線就是取一支繡線 就是一大股線有六根線的 中的三根,穿針後不對折,針後留活結.四股線就是取一支繡線 就是一大股線有六根線的 中的二根,對折後穿針.或抽出4根穿針後不對折,針後留活結...