一、C++ new數組
int* arr = new int[10]; // 分配一個有10個int型元素的數組
C++的new運算符除了用於創建單個對象外,還可以用於創建一個數組。與C的動態內存分配相同,使用new創建數組時需要指定元素的個數。上面的代碼創建了一個有10個int型元素的數組,arr指向該數組。
同樣地,我們可以使用delete運算符來釋放該數組的內存:
delete[] arr; // 釋放動態分配的數組內存
二、new動態數組
int n;
cin >> n;
double* arr = new double[n];
上面的代碼創建了一個具有n個double型元素的數組。
三、C++ new數組初始化
int arr[] = {1, 2, 3, 4};
int* pArr = new int[4]{1, 2, 3, 4};
使用new[]創建數組時,可以用大括號{}來初始化數組的元素。上面的代碼創建了兩個具有4個int型元素的數組,並分別對它們進行了初始化。
四、new byte數組
int size = 10; // 申請10個字節
byte* arr = new byte[size];
C++中的byte類型用於表示存儲空間中的單個字節,因此,可以使用它來申請特定大小的內存。
五、C++ new數組時傳變量
int size;
cin >> size;
float* arr = new float[size];
C++允許使用變量來定義需要分配的內存大小。上面的代碼就是一個例子。
六、new string數組
string* arr = new string[3];
arr[0] = "Hello";
arr[1] = "World";
arr[2] = "!";
除了基本類型,new[]也可以用於創建數組對象,例如string。上面的代碼創建了一個具有3個string類型元素的數組,並對它們進行了賦值。
七、C++ new數組調用構造函數
class MyClass {
public:
MyClass(int n) {...}
~MyClass() {...}
};
MyClass* pArr = new MyClass[10]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
如果我們想要使用構造函數對數組中的元素進行初始化,可以使用大括號{}傳遞初始化參數。
八、new char數組
char* buffer = new char[256];
memset(buffer, 0, sizeof(char)*256);
C++還允許我們使用new[]來創建char類型的數組。上面的代碼創建了一個有256個char類型元素的數組,並對它們進行了清空操作。
九、C++ new數組不夠用再分配
int* arr = new int[10];
// 申請20個int型元素,並把原來數組的值複製過去
int* newArr = new int[20];
memcpy(newArr, arr, sizeof(int)*10);
delete[] arr; // 釋放原來數組的內存
arr = newArr;
有時候,我們在程序運行時需要對已經創建的數組進行擴充,此時可以使用new[]創建新的數組,並把原來數組的元素複製到新數組中。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/187809.html