1樓:匿名使用者
c語言中long佔4個位元組,所以longa[3][5]佔4*3*5=60個位元組
從元素角度理解a代表a[0][0];從二維陣列理解a代表a二維陣列名,即二維陣列首地址;從一維陣列角度理解a代表a[0]即二維陣列第一行看作一個一維陣列,a[0]為這個一維陣列的首地址;
a[1]從二維陣列看代表a[1][0]是元素,從一維陣列角度看代表二維陣列第二行的首地址和上面a[0]一樣,
2樓:九天張
二維陣列在儲存的時候,可以看做一維陣列來對待。上面的陣列可以看做以下的陣列:
一維陣列的第一個元素(由5個元素組成):a[0][0],a[0][1],a[0][2],a[0][3],a[0][4]
一維陣列的第二個元素(由5個元素組成):a[1][0],a[1][1],a[1][2],a[1][3],a[1][4]
一維陣列的第三個元素(由5個元素組成):a[2][0],a[2][1],a[2][2],a[2][3],a[2][4]
其中,a是一個地址,指向a[3][5]陣列的第一個元素(即a[0][0]);而a[1]則表示將a[3][5]陣列看做一維陣列的第2個元素的地址,也就是a[1][0]的地址。
3樓:澶漫
佔用的位元組數 3*5*4=60
a為陣列首地址 a=&a[0][0]
a[1]=a[1][0]
4樓:匿名使用者
佔3x5x4個位元組,a代表這個陣列的起始地址,a[1]表示第二行的起始地址。
c語言,定義二維陣列a[3][5],則*(a+1)表示什麼 *(a+5)表示什麼 10
5樓:倒黴孩子改名啦
*(a+1)相當於a[0][1],
*(a+5)相當於a[0][5]已經越界了
在計算機c語言中,二維陣列,a[][3]={1,2,3,4,5,6,7,8,9};a[0][0]=?a[0][1]=?a[1][1]=?
6樓:匿名使用者
二維陣列,第一維項數可以不寫,由第二維項數推出。
本題,第二維項數為
3,共9個數字,則第一維項數為3
即:1 2 3 對應的a[0][0] a[0][1] a[0][2]
4 5 6 對應的a[1][0] a[1][1] a[1][2]7 8 9 對應的a[2][0] a[2][1] a[2][2]因此,a[0][0]=1
a[0][1]=2
a[1][1]=5
7樓:匿名使用者
二維陣列初始化時,可以採用上面這種方式,系統會根據總個數和第二位的長度算出第一位的長度。 上面陣列中總共有9個元素,每行有3個元素,可以確定行數是3,也就是a[3][3]。
另外陣列中的元素是按行存放的,先存第一行,再放第二行,依次存放。
還有就是陣列的下表是從0開始,如果有3個元素,就是a[0] a[1] a[2] 沒有a[3] 。
所以a[0][1]=2 也就是第一行第二的元素。a[0][0]=1 也就是第一個元素。
a[1][1]=5 也就是第二行第二個元素。
8樓:匿名使用者
二維陣列在記憶體中的排列順序是先行對映,後列對映,因此,你初始化的值排列如下:
1,2,3
4,5,6
7,8,9
直接查詢便可得
a[0][0]=1,a[0][1]=2,a[1][1]=5
c語言有關二維陣列變數初始化
9樓:aaa**王
例如對整型二維陣列a[3][2]賦值
方法一:
在定義的同時賦值
int a[3][2]=;//所有陣列元素均為0方法二:
int a[3][2]=;//常規的賦值方法方法三:
int a[3][2]=,,};//分行的賦值方法方法四:
int a[3][2]=,,};//部分賦值方法,第一行元素的值分別為1,2,第二行元素值都是0,
第三行第一個元素值為3,第二個元素值為0
方法五:
int a[3][2];/先定義
for(i=0;i<=3;i++) //用雙重for迴圈賦值,i,j表示二維陣列下標
for(j=0;j<=2;j++)
scanf("%d",&a[i][j]);
10樓:函吉貫尋菡
二維陣列可以看成特殊的一維陣列,每個元素又由一個一維陣列組成。
例如:構建一個maxrownum*maxrownum的矩陣
long double **data1_bfe;
data1_bfe=(long double **)malloc(maxrownum*sizeof(long double *));
for(i=0;i動態分配maxrownum個long double的記憶體空間,跟long
double
a[5]相似,但前者是堆上分配的,後者是棧上分配的;
data1_bfe=(long double **)malloc(maxrownum*sizeof(long double *));
意思就是定義一個有maxrownum個long double型別的指標的動態陣列,然後在裡面存放指標,相當於容器,data1_bfe就會成為指標的指標。
注意事項:c語言在定義陣列和表示陣列元素時常常採用a[
][]的形式,使用方便,不易出錯。
11樓:year好好學習
方法一: 在定義的同時賦值 int a[3][2]=;//所有陣列元素均為0 方法二: int a[3][2]=;//常規的賦值方法 方法三:
int a[3][2]=,,};//分行的賦值方法
12樓:匿名使用者
int array[10][10]=;//這是全0
或者int array[3][3]=;
13樓:一米陽光鮑
int table=;
14樓:程式設計師的每一天
c語言陣列之二維陣列
15樓:
第一個初始化方法有錯
16樓:匿名使用者
若干變數按有序的形式組織起來,
以便於程式處理,這些資料元素的集合就是陣列,按照陣列
元素的型別不同,可分為:數值陣列、字元陣列、指標陣列
結構陣列等各種類別。
陣列說明的一般形式為:
型別說明符 陣列名[常量表示式],......;
其中型別說明符可以是任一種基本資料型別或構造資料型別
陣列名是定義的陣列識別符號。常量表示式表示資料元素的個
數,也就是陣列的長度。
對陣列型別的說明應注意:
1)陣列的型別實際上是陣列元素的取值型別。
2)陣列名的書寫應符合識別符號的書寫規範。
3)陣列名不能與其他變數名相同。
4)常量表示式表示陣列元素的個數,但是其下標從0開始計算
5)不能在方括號中用變數來表示元素的個數,但是可以用符號
常數或常量表示式。
6)允許在同一個型別說明中,說明多個陣列和多個變數。
陣列元素的表示方法
一般比較簡單就是陣列名[下標]來引用,先定義後用,如果
是小數的話,直接自動取整。
陣列賦值分為:初始化賦值和動態賦值
初始化賦值一般形式為:
static 型別說明符 陣列名[常量表示式]=;
static表示靜態儲存型別,c語言規定只有靜態儲存陣列和外部陣列
才可做初始化賦值。
c語言對陣列的初始化賦值還有幾個規定:
1)可以只給部分元素賦值。
2)只能給元素逐個賦值,不能給陣列整體賦值。
3)如不給可初始化的陣列賦初值,在在陣列說明中,可以不給出陣列
元素的個數。
下面看一下多維陣列
主要看一下二維陣列,其他的就可以用二維陣列類推得到
二維陣列的型別說明的一般形式是:
型別說明符 陣列名[常量表示式1][常量表示式2]...;
在c語言中二維陣列是按行排列的
二維陣列的表示方法:
陣列名[下標][下標]
二維陣列的初始化
二維陣列初始化也是在型別說明時給各下標變數賦以初值。 二維陣列可
按行分段賦值,也可按行連續賦值。
二維陣列的初始化還應該注意:
1)可以只對部分元素賦初值,未賦初值的元素自動取為0。
2)如對全部元素賦初值,則第一維的長度可以不給出。
字元陣列:
用來存放字元變數的陣列稱為字元陣列。
c語言允許用字串的方式對陣列作初始化賦值。例如:
static char c=; 可寫為:
static char c=; 或去掉{}寫為:
sratic char c="c program";
用字串方式賦值比用字元逐個賦值要多佔一個位元組, 用於存放字串結
束標誌'\0'。上面的陣列c在記憶體中的實際存放情況為: c program\0`\0'是
由c編譯系統自動加上的。由於採用了`\0'標誌,所以在用字串賦初值時一
般無須指定陣列的長度, 而由系統自行處理。在採用字串方式後,字元數
組的輸入輸出將變得簡單方便。 除了上述用字串賦初值的辦法外,還可用
printf函式和scanf函式一次性輸出輸入一個字元陣列中的字串, 而不必
使用迴圈語句逐個地輸入輸出每個字元。
void main()
printf("%s\n",c);
注意在本例的printf函式中,使用的格式字串為"%s", 表示輸出的是一
個字串。而在輸出表列中給出陣列名則可。 不能寫為: printf("%s",c);
void main()
char st[15];
本例中由於定義陣列長度為15, 因此輸入的字串長度必須小於15,
以留出一個位元組用於存放字串結束標誌`\0`。 應該說明的是,對一個字
符陣列,如果不作初始化賦值,則必須說明陣列長度。還應該特別注意的是,
當用scanf函式輸入字串時,字串中不能含有空格,否則將以空格作為串
的結束符。例如執行例4.8,當輸入的字串中含有空格時,運**況為:
input string:this is a book this 從輸出結果可以看出空格以後的字元
都未能輸出。 為了避免這種情況, 可多設幾個字元陣列分段存放含空格的
串。程式可改寫如下:
lesson
void main()
本程式分別設了四個陣列, 輸入的一行字元的空格分段分別裝入四個陣列。
然後分別輸出這四個陣列中的字串。在前面介紹過,scanf的各輸入項必須以
地址方式出現,如 &a,&b等。但在例4.8中卻是以陣列名方式出現的,這是為
什麼呢?這是由於在c語言中規定,陣列名就代表了該陣列的首地址。 整個
陣列是以首地址開頭的一塊連續的記憶體單元。如有字元陣列char c[10],在
記憶體可表示如圖4.2。設陣列c的首地址為2000,也就是說c[0]單元地址為2000。
則陣列名c就代表這個首地址。因此在c前面不能再加地址運算子&。如寫作
scanf("%s",&c);則是錯誤的。 在執行函式printf("%s",c) 時,按陣列名c
找到首地址,然後逐個輸出陣列中各個字元直到遇到字串終止標誌'\0'為止。
字串常用函式:
用於輸入輸出的字串函式在使用前應包含標頭檔案"stdio.h",使用其他字串
函式則應包含標頭檔案"string.h".下面介紹幾個常用的字串函式:
1)字串輸出函式 puts 格式:puts(字元陣列名) 功能:把字元陣列中的字元
串輸出到顯示器。
#include"stdio.h"
main()
2)字串輸入函式gets 格式:gets(字元陣列名) 功能:從標準輸入裝置上
輸入一個字串。
#include"stdio.h"
main()
tips:gets函式並不以空格作為字串輸入結束的標誌,而只是以回車作為輸入
結束,這是與scanf不同的部分
3)字串連線函式strcat 格式:strcat(字元陣列名1,字元陣列名2)
功能:把字元陣列2中的字串連線到字元陣列1中字串後面,並刪去字串
1後的串標誌"\0",本函式返回字元陣列1的首地址。
#include"string.h"
main()
4)字串拷貝函式strcpy 格式:strcpy(字元陣列名1,字元陣列名2)
功能:把字元陣列2中的字串拷貝到字元陣列1中,串結束標誌 "\0"也一同
拷貝,字元陣列2也可以是一個字元常量,就相當於把一個字串賦予一個字元陣列
#include"string.h"
main()
5)字串比較函式strcmp格式:strcmp(字元陣列1,字元陣列2) 功能:
按照ascii碼順序比較兩個陣列中的字串,並有函式返回值返回比較結果
#include"string.h"
main()
a[i]=n;
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}例二:
main()
printf("\narray a:\n");
for(i=0;i<=2;i++)
printf("\narray b:\n");
for(i=0;i<3;i++)
printf("%5d",b[i]);
printf("\n");
}例三:
void main()
puts(cs[i]);
printf("\n");
另外,站長團上有產品**,便宜***
c語言中二維陣列行指標是什麼,C語言中二維陣列行指標是什麼
就是指向每一行的指標,比如說二維陣列a 2 3 a 0 代表的是二維陣列第零行的首地址相當於 a 0 0 a 1 代表的是二維陣列第一行的首地址相當於 a 1 0 a 0 1代表的是二維陣列第零行,第一列的地址相當於 a 0 1 行指標其實就是二級指標,也就是說它指向一個一維陣列,int a 2 3...
c語言二維陣列下標表示方法,C語言二維陣列下標表示方法
下標就是在裡的,他是重0開頭的。具體表示如下 int a 5 5代表a最後個陣列裡的元素個數 是初學者吧!要努力喲!int n float a n n 都是從0開始到n 1 c語言二維陣列下標的值怎麼算 陣列的下標是從0開始,由於陣列是連續儲存的,你可以想象用一個4x4的 來表達這個陣列,然後把fo...
在計算機C語言中,二維陣列,a3123456789a
二維陣列,第一維項數可以不寫,由第二維項數推出。本題,第二維項數為 3,共9個數字,則第一維項數為3 即 1 2 3 對應的a 0 0 a 0 1 a 0 2 4 5 6 對應的a 1 0 a 1 1 a 1 2 7 8 9 對應的a 2 0 a 2 1 a 2 2 因此,a 0 0 1 a 0 1...