鑑於昨天偷懶,沒有及時的將知識點寫入自己的部落格,今兒只能一次性地寫兩個。不過也好,順帶的可以複習一下。
1. 概念
所謂的陣列,即為若干個資料型別相同的元素集合。
2. 定義
型別 名字[元素個數];
3. 訪問
a[0]~a[n];
4. 初始化
1.定義了陣列,若不初始化,則元素值為隨機值。
2.若進行了部分初始化,則沒有初始化的元素預設為0.
3.初始化禁止越界。
5.元素個數
常量,若不寫,則空間由初始化的元素個數決定。若定義的是變數,則不能初始化。
6.性質
1.元素類相同。
2.開闢的空間是連續的。
3.陣列名是首位址(*),這個在指標這用到很多。
4.陣列越界訪問不報錯,使用時注意。
這裡有個會經常用到的小公式,關於計算元素個數的,譬如
int a[n] = ;
則 n=sizeof (a) / sizeof( int ) ;
在陣列這一章裡有乙個很重要的知識點:氣泡排序法
非常非常常見的面試題,必須要會(嚴肅臉= =。)
關鍵性**如下:
n代表元素個數
for(i=0
;i }
}
排序過程:
(1)比較第乙個數與第二個數,若為逆序a[0]>a[1],則交換;然後比較第二個數與第三個數;依次類推,直至第n-1個數和第n個數比較為止——第一趟氣泡排序,結果最大的數被安置在最後乙個元素位置上
(2)對前n-1個數進行第二趟氣泡排序,結果使次大的數被安置在第n-1個元素位置
(3)重複上述過程,共經過n-1趟氣泡排序後,排序結束
例題: 定義乙個int型陣列,將陣列裡的數進行翻轉
int a = ;
**如下:
int a = ;
int n = sizeof(a) / sizeof(int); //計算元素個數
int i,j; //i:前 j:後
for(i=0,j=n-1; i//之前那篇文章有提到過這個方法
//不需要借助其他變數,將兩個數進行互換
a[i] ^= a[j];
a[j] ^= a[i];
a[i] ^= a[j];
}
我這裡基本上就貼上關鍵性**。這裡多重for迴圈裡,格式為:
for ( 表示式1,表示式2;條件;表示式3,表示式4){}
定義:型別 名字[行][列]
二維陣列和一維陣列性質,初始化什麼的都一樣,這裡就不多說了
這裡也有個例題
例題:找二維陣列裡的最大值,及其下標
int a[3][4] = ,,};
**如下:
**int row = 0,line = 0;
int i,j;
for(i=0; i<3;
i++)
}}**
之前的一堆性質啊,定義什麼的我就不重複多說了,說點乾貨。
需要注意的是,char型陣列的字串可以用printf/puts的形式進行輸出,而int型字串輸出只能以遍歷的形式。
而對於char型陣列賦值的時候,若要以乙個字串直接賦值的話,只允許出現在初始化的時候,在printf中,%s的輸出是從給定的位址開始,到』\0』結束的,不信你可以使用sizeof(陣列名)
在字元陣列中有三個很方便的函式
strcpy:
功能:將字串2,拷貝到字元陣列1中去
說明:字元陣列1必須足夠大,拷貝時』\0』一同拷貝
strcmp:
功能:比較兩個字串
返回值:相同為0 ,s1>s2 正數 s1
C語言的陣列
1 int a 不可以,要制定分配空間 2 scanf d n int a n 不可以3 置零 int a 10 4 陣列名指標常量,儲存的是元素的首位址,元素首位址不可修改 1 int main for i 0 i 5 i 此程式沒有問題,因為p的值並沒有改變,當為p 時,才需要p a 此外,輸入...
C語言的陣列
定義陣列 int arr 3 定義陣列 arr 0 1 進行賦值 arr 1 2 arr 2 3 當定義陣列之後,arr就為乙個常量,代表陣列的位址,就是 arr 0 的位址 int arr 3 定義陣列 int b arr int c arr 0 printf b d n b printf c d...
c語言陣列
陣列 構造資料型別之一 陣列是具有一定順序關係的若干個變數的集合,組成陣列的各個變數稱為陣列的元素。陣列中各元素的資料型別要求相同,用陣列名和下標確定。陣列可以是一維的,也可以是多維的。在科學計算中,許多重要的應用都是基於陣列的。所謂一維陣列是指只有乙個下標的陣列。它在計算機的記憶體中是連續儲存的。...