c++陣列--詳細分析
摘自
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等操作都是不允許的。
C 陣列 詳細分析
1 陣列下標 1 在定義時必須明確。只能用正整數或const常量,靜態或全域性變數不可以 例如 const int length 5 int array length 特 在new時可以用變數做下標。例如 int array new int variable 2 在初始化時 一維陣列,可略 例如 i...
const詳細分析
最近在分析 linux 驅動的過程過程中遇到一些關於 const 的使用,現在在這裡詳細剖析一下 一,const int p 首先分析一下幾個概念 1 p 是乙個指標變數,因而它也是乙個變數,所謂變數就有變數的位址和變數的值,而這裡 p變數的值就是乙個位址,該位址下存放的是乙個整數,p的值等於這個整...
約數詳細分析
約數詳細分析 我們先來認識一下約數 約數分正約數和負約數兩種,我們一般只討論正約數。也就是說,接下來所提的約數,只考慮正約數。如果有乙個數k,滿足k n,那麼k就是n 的約數 因數 n是k的倍數。求乙個數的約數是資訊學競賽裡乙個基礎的不能再基礎的問題。如果只求乙個數,最容易想到的就是列舉。當然列舉也...