陣列有一系列相同的元素構成。使用陣列宣告來告訴編譯器需要乙個陣列。數值宣告包括陣列元素的數目和元素的型別。
要訪問陣列中的元素可以使用下標(index)來表示單個元素,index是從0開始計數的。
陣列的初始化:
比如
days[12]=
如果陣列沒有初始化
比如
int no_data[4]
當列印出陣列元素時,陣列的值是不定的。因為編譯器使用的數值是儲存單元中已有的數值。
初始化列表中的元素數目應該和陣列大小一致。如果二者不一致:
1.比如當數值數目少於陣列元素數目時,多餘的陣列元素被初始化為0。例子如下:
1 #include2#define size 4
3int main(void)
4 ;6
int i;
7 printf("
%2s%14s\n
","i
","some_data[i]
");8
for(i=1;i9 printf("
%2d%14d\n
",i,some_data[i]);
10return
0;11 }
output:
i some_data[i]1106620
30
2.如果初始化列表中專案的個數大於陣列大小,編譯器會認為這個乙個錯誤。程式就無法執行。
可以省略括號中的數字,從而讓編譯器自動匹配陣列的大小和初始化列表中的專案數目
1 #include2int main(void)
3 ;5
/*const:
6有時需要使用唯讀陣列,也就是程式從陣列中讀取數值,但是程式不想陣列中寫入資料。在這種情況下,可以使用關鍵字const。這樣,程式會把陣列中的每個元素當成常量來處理。用const宣告之後不能再對它賦值*/7
int index;8/*
運算子sizeof給出其後的物件或型別的大小(以byte為單位)*/9
for(index=0;index10 printf("
monsth %2d has %d days.\n
",index+1,days[index]);
11return
0;12 }
多維陣列
多維陣列是陣列的陣列。比如5年中每月的降水用float rain[5][12]來表示。可以解釋為rain具有5個元素,並且每個元素都是包含12個float數值的陣列。
用二維檢視表示陣列可以直觀的想象兩個索引的陣列。實際上,陣列是順序儲存的,前12個元素之後,耕者就是第二個包含23個元素的陣列。
多維陣列的初始化要注意幾個問題:
1.比如:
constfloat rain[5][12]=,
,......
}
第乙個列表中只有4個數值,則第一行只有前4個元素得到賦值,最後8個元素被預設初始化為0。如果列表中的數值多於12個,則報告錯誤,程式無法執行,而且這些數值不會影響到下一行的賦值。
2.初始化的時候也可以省略內部的花括號,只保留最外面一對花括號。只要保證數值的個數正確,初始化效果就是一樣的。如果數值的個數不夠,那麼在陣列初始化時候,按照先後順序來逐行賦值,一次前面的元素首先得到賦值,直到後面沒有賦值的元素被初始化為0.
指標和陣列
陣列名同時也是該陣列首元素的位址
1 #include2#define size 4
3int main(void)
4
output:
shortdouble
pointers + 0: 0028ff0c 0028fee8
pointers + 1: 0028ff0e 0028fef0
pointers + 2: 0028ff10 0028fef8
pointers + 3: 0028ff12 0028ff00
在上面的例子中,對乙個指標加1的結果是對該指標增加乙個儲存單元。
因為在c語言中:對乙個指標加1的結果是對該指標增加乙個儲存單元(也就是說:對指標加1,等價於對指標的值加上它指向的物件的位元組大小)。對陣列而言,位址會增加到下乙個元素的位址,而不是下乙個位元組。
比如: *(days+index)和days[index]等價
//未完成
C語言 指標陣列和指標陣列
本質是陣列 只不過呢,它裡面存放的資料型別不是int,也不是char這類基本型別,而是乙個指標型別,說白了就是位址,所以叫指標陣列!記住 是存放指標的陣列!int p n 本質是指標 只不過是指向乙個陣列的指標,也稱之為 行指標 int p n p是乙個指標,指向乙個int型別的一位陣列,這個一位陣...
C語言陣列和指標
1.陣列和指標的宣告 1.指向整數的指標宣告 int x 2.整數陣列宣告 int y 2.如果把int mango 100 用int mango來使用,就會發生型別不匹配錯誤 乙個是指標,乙個數陣列名 3.宣告和定義 1.定義只能進行一次,只能出現在乙個地方。定義相當於特殊的宣告,它為物件分配記憶...
c語言 陣列和指標
指標可以理解為乙個變數,是乙個專門用來存放位址的變數。int ptr null 整型指標,內容為空。char ptr null char型指標,內容為空。float ptr null 浮點型指標,內容為空。可如下使用 int a 10 int ptr a char指標解引用只能訪問乙個位元組大小,而...