一、一維數組
- 靜態 int array[100]; 定義了數組array,並未對數組進行初始化
- 靜態 int array[100] = {1,2}; 定義並初始化了數組array
- 動態 int* array = new int[100]; delete []array; 分配了長度為100的數組array
- 動態 int* array = new int[100](1,2); delete []array; 為長度為100的數組array初始化前兩個元素
二、二維數組
- 靜態 int array[10][10]; 定義了數組,並未初始化
- 靜態 int array[10][10] = { {1,1} , {2,2} }; 數組初始化了array[0][0,1]及array[1][0,1]
- 動態 int (*array)[n] = new int[m][n]; delete []array;
- 動態 int** array = new int*[m]; for(i) array[i] = new int[n]; for(i) delete []array[i]; delete []array; 多次析構
- 動態 int* array = new int[m][n]; delete []array; 數組按行存儲
三、多維數組
int* array = new int[m][3][4]; 只有第一維可以是變量,其他維數必須是常量,否則會報錯
delete []array; 必須進行內存釋放,否則內存將泄漏
四、數組作為函數形參傳遞
- 一維數組傳遞:
- void func(int* array);
- void func(int array[]);
- 二維數組傳遞:
- void func(int** array);
- void func(int (*array)[n]);
數組名作為函數形參時,在函數體內,其失去了本身的內涵,僅僅只是一個指針,而且在其失去其內涵的同時,它還失去了其常量特性,可以作自增、自減等操作,可以被修改。
五、字符數組
char類型的數組被常委字符數組,在字符數組中最后一位為轉移字符'\0'(也被成為空字符),該字符表示字符串已結束。在C++中定義了string類,在Visual C++中定義了Cstring類。
字符串中每一個字符占用一個字節,再加上最后一個空字符。如:
char array[10] = "cnblogs";
雖然只有7個字節,但是字符串長度為8個字節。
也可以不用定義字符串長度,如:
char array[] = "cnblogs";