一維陣列的定義方式:
資料型別 陣列名[整型常量表示式]
注意:方括號中只能是常量表示式,不能使用變數。常量表示式的值表示陣列最多能存放的元素的個數,也稱為陣列的大小
陣列所佔總位元組數=sizeof(資料型別)*陣列大小
int k=5;float c[k]; 不合法,k是變數
#define m 20
int num[m]; //合法,m是編譯預處理命令define定義的符號常量
&陣列名[下標]代表元素在記憶體中的位址。
ch[2.5+2.5] //非法,下標只能是整型表示式
ch[10-10] //合法,相當於ch[0]
一維陣列的初始化
變數的初始化就是定義變數的同時賦初值,一維陣列初始化有以下幾種
(1)char a[5]=;
(2)int a[6]=;
(3)int a= //在定義時中的值不能為空,只有當用初始值進行初始化時,才可省略,利用初始值的個數作為陣列的大小。
二維陣列
定義:型別說明符 陣列名[整型常量表示式][整型常量表示式]; //int a[3][4];
二維陣列的引用
類似於一維陣列元素的引用方式,二維陣列元素的引用方式也是 「陣列名[下標]」。其區別是,二維陣列是「有行有列」,因此比一維陣列多乙個下標,即 陣列名[下標][下標]
例如「int a[3][4];定義乙個具有3行4列的整型陣列a,陣列可以存放12個整數。可以將陣列a看成是由3個一維陣列組成的,每個一維陣列中又含有4個元素。這3個一維陣列的名稱是a[0]、a[1]和 a[2],第乙個陣列a[0]的各元素為a[o][o]、a[0][1]、 a[0][2]、a[o[3];第二個陣列、第三個陣列以此類推。陣列a各成員變數如下:
a[0][0],a[0][1], a[0][2], a[0][3]
a[l][0], a[1][1], a[1][2], a[1][3]
a[2][0],a[2][1], a[2] [2], a[2][3]
在記憶體中二維陣列是否也是這樣「有行有列」存放嗎?答案是否定的。計算機記憶體沒有什麼所謂的「行」與「列」,都是以位元組為單位的連續空間。二維陣列在記憶體存放時,採用「逐行存放」,行是「從上到下」,每一行是「從左至右」。例如,上例中的陣列a[3][4]在記憶體存放元素的順序是: a[o][0]→a[0][1]→a[0][2]- a[0][3]→a[1][0]-._ a[2][2]-a[2][3]。
二維陣列的初始化
二維陣列初始化有以下幾種方法
(1)int a[3][4]=,,};
(2)int a[3][4]=;
(3)int a[3][4]=,};
(4)int a[3][4]=;
(5)int a[4]=; //只能省略行數,不能省略列數,原因在於二維陣列是按行進行存放的,省略列數就無法控制何時轉入下一行。
(6)int a[4]=;
字串與字元陣列
字串存放記憶體時,除了將其中的每個字元存入記憶體外,還要在最後加乙個「\0」字元存入記憶體,「\0」也是字串結束標誌。定義用於存放字串的字元陣列時,陣列的大小應該字串的長度+1。
1、用一維陣列存放乙個字串
(1)char a[4]=;//一維字元陣列
(2)char a[5]=; //存放了字串abcd
(3)char a[5]= //雙引號是字串常量的標誌
(4)char a[5]="abcd" //與(3)等價
(5)char a="abcd" ; //有初始值來確定陣列的大小
(6)char a=;
2、用二維陣列存放多個字串
char s[3][10]=; //表示二維陣列最多可以存放三個字串,每個串的長度最大為9,留乙個存放『\0』
字串的輸入輸出
1、字串的輸出
字串的輸出可以使用printf()和puts()
1)printf()函式
(1)按%c的格式,利用迴圈控制語句將字串中的字元逐個輸出到螢幕
#include void main()
; for(i=0;i<6;i++)
printf("%c",str[i]); //world
}
(2)按%s的格式,用printf()將陣列的內容輸出到螢幕,直到遇到『\0』為止。
分析:從程式中可以看出利用printf()函式使用%s格式進行輸出字元陣列時,輸出列表中使用的是「陣列名」。輸出字元陣列str1時,顯示的結果中最後出現了一些隨機字元,原因在於陣列str1初始化時沒有結束標誌\0,因此輸出時會把超出陣列範圍的記憶體中隨機的字元輸出,直到遇到機內的"0'為止,這顯然不是我們所期望的。而陣列str2和str3在初始化時都是按照字串的格式進行初始化的,因此輸出結果是正常的。
因此,prinf函式採用%s的格式常用於輸出字串,輸出內容處只需書寫「陣列名」即可,但要注意陣列中存放的是否是字串。
2) puts函式
puts函式也可實現輸出字串,並且自動將字串的結束標"\0轉換成回車換行符。
2、字串的輸入字串的輸入可以使用scanf和gets函式實現。
1)scanf函式
(1)按%c的格式,利用迴圈控制語句
#include void main()
(2)按%s的格式,將豬粉草的內容輸入到字元陣列,當輸入的字元是「空格」「tab」或回車鍵,系統預設輸入結束。
2)gets函式可以實現輸入字串到字元陣列中,當遇到回車鍵時,系統預設使用者輸入結束
字串處理函式使用前要包含對應的標頭檔案string.h
strlen(字元陣列)——測字串長度
功能:計算機指定字串的實際長度(不含字串結束\0),並返回字串的長度。
strcat(字元陣列1,字元陣列2)
功能:將字元陣列2中存放的豬粉草連線到字元陣列1中存放的字串尾部,同時刪去字串1的結束標誌\0,組成新的字串,存入字元陣列1中。該函式返回的是字串1的首位址。
strcmp(字元陣列)
功能:安裝從左到右的順序依次比較字元陣列1和字元陣列2對應位置字元ascii碼值,並返回比較結果,
strcpy(字元陣列1,字元陣列2)
功能:把字元陣列2中的字元複製到字元陣列1中,結束標誌也複製進去。
注意;複製後原有的字串將被覆蓋。
執行下面的程式時,如果輸入a,則輸出結果是a123
#include #include void main()
c語言學習之陣列指標
首先,指標,就相當於乙個位址,指標變數就是拿來存放指標所指向另一變數的位址 定義乙個指標變數需要說明 指標型別,指標變數名。例 int p,a p a 而 陣列,包括陣列型別和陣列名還有陣列長度 陣列長度只能是常量 陣列有一維陣列和多維陣列。例 int a 10 內的必須是常量。那 究竟什麼是陣列指...
c語言學習 陣列
我們在程式設計時往往需要儲存很多數,這個時候我們就需要陣列這個工具了 1.陣列的宣告 型別 變數名稱 元素數量 double weight 20 元素數量必須是整數 定義 是一種容器 放東西的東西 特點是 1.其中所有的元素具有相同的資料型別 2.一旦建立,不能改變大小 3.陣列中的元素在記憶體中是...
C語言學習 陣列
代表c語言提高端段筆記哈哈 陣列加強了資料處理能力 即在記憶體中開一段連續的空間 注意從a 0 開始 include int main sum n printf d n sum for n 0 n 第乙個陣列演算法 一般計數器都用0為初值加 號聯動的原因也是因為陣列標號從0開始 陣列是有型別屬性的 ...