一、一維陣列
靜態 int array[100]; 定義了陣列array,並未對陣列進行初始化
靜態 int array[100] = ; 定義並初始化了陣列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] = , }; 陣列初始化了array[0][1]=及array[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";
六、釋放陣列記憶體
靜態分配的內存在棧裡,每進入乙個函式時都會建棧,棧裡會存放函式用到的引數、區域性變數等資訊,函式執行完後,會出棧銷毀棧,這個過程會釋放靜態分配的陣列記憶體,由系統自動完成。
動態分配的記憶體,實際在堆上,系統沒法自動幫你去釋放堆上的記憶體,需要你自己寫free或者delete來告訴作業系統需要幫你去釋放堆上哪個位置的記憶體。
c 陣列定義及初始化
c 提供了一種資料結構,即陣列,該陣列儲存乙個固定大小的由相同型別元素構成的順序集合。陣列中的元素儲存在乙個連續記憶體位置中,元素可通過陣列索引訪問,最低位址對應於第乙個元素,最高位址對應於最後乙個元素。例如上述宣告方式用來定義乙個靜態陣列,靜態陣列所需記憶體大小要在編譯時就確定下來,陣列被分配在棧...
C 陣列初始化
定義 int pia new int 10 array of 10 uninitialized ints 此 new 表示式分配了乙個含有 10 個 int 型元素的陣列,並返回指向該陣列第乙個元素的指標,此返回值初始化了指標 pia。在自由儲存區中建立的陣列物件是沒有名字的,只能通過其位址間接地訪...
C 陣列初始化
c 陣列初始化 定義 int pia new int 10 array of 10 uninitialized ints 此 new 表示式分配了乙個含有 10 個 int 型元素的陣列,並返回指向該陣列第乙個元素的指標,此返回值初始化了指標 pia。在自由儲存區中建立的陣列物件是沒有名字的,只能通...