C 陣列 詳細分析

2021-07-25 15:03:31 字數 1713 閱讀 9374

1、陣列下標:

(1)在定義時必須明確。

①只能用正整數或const常量,靜態或全域性變數不可以;例如:const int length=5; int array[length];

②(特) 在new時可以用變數做下標。例如:int * array  =  new int[variable];

(2)在初始化時:

①一維陣列,可略; 例如:int array;

②二維陣列,其一維可略,二維不能略。例如:int array [3]=;

(3)在作引數時:

①一維陣列,略;(寫了也被略去) 例如:void func(int array){}

②二維陣列,一維略,二維不能略。 例如:void func(int array[5]){}

2、下標與初始化元素:

(1)下標省略的,每個元素都應寫出; 例如:int array=;

(2)下標明確的,可只寫前面部分元素,後面的按預設值: 例如:int array[5] = ;

①全域性陣列、靜態陣列,預設值為0;

②區域性陣列,預設值不確定。

(3)元素之間不可以用逗號跳過。 例如:int array[5] = ;//error

3、字元陣列:

(1)字元陣列=字串

(2)其末尾字元為' /0 '

(3)其長度=有效字元數+1,在定義字元陣列長度時切記。

(4)初始化方法

① char arr[6] = ;

② char arr[6] = "hello";              //與第①種相同,一般使用這乙個

③ char arr[6] = ;           //主要在特殊字元時使用

4、二維陣列初始化:

(1)二維陣列中,第1維表示行,第2維表示列。

(2)初始化時,可以每行使用1個{},比如int arr[3]=,};

也可以只使用1個{},比如int arr[3]=;  與上面句子等效。

5、要定義很大的陣列時,應建立全域性或靜態型別的陣列。因為區域性陣列使用棧區,大陣列會導致棧溢位。

6、陣列長度計算:

(1)sizeof

方法:sizeof(陣列名)/ sizeof(陣列型別名) 

說明:陣列占用位元組除以陣列型別所佔位元組,結果為陣列元素個數

(2)strlen

說明:strlen,求字串有效長度

方法:strlen(字元陣列名)  //結果為字元陣列有效字元長度,不包括末尾的' /0'

注意:當陣列作為函式引數傳遞時,陣列名代表的是陣列的首址,而非陣列內容,故無法使用sizeof和strlen;

同時,在傳址時,應提供2個引數:1個是陣列名,代表陣列首位址;1個是陣列元素個數,以便確定傳遞的次數。

7、陣列相當於指標——常量指標。

(1)對於指向陣列的指標的定義,與指向普通變數的指標定義不同:

int a=20;

int p = &a;                //對普通變數定義時,前面要加上&

int b[20];

int pi = b;                 //對陣列定義時,前面不用加&:因為陣列本身相當於指標

(2)對於int *p = a[3]來說,a,&a,&a[0]等價,都是陣列a的首元素位址。

8、陣列是常量,不可修改:如對於陣列a[2]來說,a++,++a,a--,--a,a+=3,a-=6等操作都是不允許的。

頂 0 踩

C 陣列 詳細分析

c 陣列 詳細分析 摘自 1 陣列下標 1 在定義時必須明確。只能用正整數或const常量,靜態或全域性變數不可以 例如 const int length 5 int array length 特 在new時可以用變數做下標。例如 int array new int variable 2 在初始化時...

const詳細分析

最近在分析 linux 驅動的過程過程中遇到一些關於 const 的使用,現在在這裡詳細剖析一下 一,const int p 首先分析一下幾個概念 1 p 是乙個指標變數,因而它也是乙個變數,所謂變數就有變數的位址和變數的值,而這裡 p變數的值就是乙個位址,該位址下存放的是乙個整數,p的值等於這個整...

約數詳細分析

約數詳細分析 我們先來認識一下約數 約數分正約數和負約數兩種,我們一般只討論正約數。也就是說,接下來所提的約數,只考慮正約數。如果有乙個數k,滿足k n,那麼k就是n 的約數 因數 n是k的倍數。求乙個數的約數是資訊學競賽裡乙個基礎的不能再基礎的問題。如果只求乙個數,最容易想到的就是列舉。當然列舉也...