C語言的陣列

2021-08-03 10:35:55 字數 1983 閱讀 5179

鑑於昨天偷懶,沒有及時的將知識點寫入自己的部落格,今兒只能一次性地寫兩個。不過也好,順帶的可以複習一下。
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語言陣列

陣列 構造資料型別之一 陣列是具有一定順序關係的若干個變數的集合,組成陣列的各個變數稱為陣列的元素。陣列中各元素的資料型別要求相同,用陣列名和下標確定。陣列可以是一維的,也可以是多維的。在科學計算中,許多重要的應用都是基於陣列的。所謂一維陣列是指只有乙個下標的陣列。它在計算機的記憶體中是連續儲存的。...