Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

วิธีสร้างอาร์เรย์จำนวนเต็มแบบไดนามิกใน C++ ด้วยคีย์เวิร์ด new

ใน C++ สามารถสร้างอาร์เรย์แบบไดนามิกได้โดยใช้คีย์เวิร์ด new และลบได้ด้วยคีย์เวิร์ด delete

โค้ดตัวอย่าง

#include <iostream>
using namespace std;

int main() {
    int i, n;
    cout << "Enter total number of elements: " << "\n";
    cin >> n;
    int *a = new int[n]; // จัดสรรอาร์เรย์ n จำนวนเต็ม
    cout << "Enter " << n << " elements" << endl;
    for(i = 0; i < n; i++) {
        cin >> a[i];
    }
    cout << "Entered elements are: ";
    for(i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
    cout << endl;
    delete[] a; // ต้องใช้ delete[] สำหรับอาร์เรย์
    return 0;
}

ผลลัพธ์

Enter total number of elements: 7
Enter 7 elements
1 2 3 4 5 6 7
Entered elements are: 1 2 3 4 5 6 7

ข้อสังเกตสำคัญ:

  • new int(n) ในต้นฉบับจัดสรร int เดียวที่มีค่าเริ่มต้น n ไม่ใช่อาร์เรย์ ข้อความถูกต้องคือ new int[n]
  • การลบอาร์เรย์ต้องใช้ delete[] a ไม่ใช่ delete(a) เพื่อเรียก destructor ของทุกองค์ประกอบและคืนหน่วยความจำถูกต้อง
  • ใน C++11 ขึ้นไป แนะนำให้ใช้ std::vector หรือ std::unique_ptr แทน new/delete ดิบ เพื่อความปลอดภัยและป้องกัน memory leak