ใน C ++ อาร์เรย์ความยาวตัวแปรไม่ถูกต้องตามกฎหมาย G ++ อนุญาตให้เป็น "ส่วนขยาย" (เนื่องจาก C อนุญาต) ดังนั้นใน G ++ (โดยไม่ต้อง-pedantic
ปฏิบัติตามมาตรฐาน C ++) คุณสามารถทำได้:
int n = 10;
double a[n];
หากคุณต้องการ "อาร์เรย์ความยาวตัวแปร" (ดีกว่าเรียกว่า "อาร์เรย์ขนาดไดนามิก" ใน C ++ เนื่องจากไม่อนุญาตให้ใช้อาร์เรย์ความยาวตัวแปรที่เหมาะสม) คุณจะต้องจัดสรรหน่วยความจำแบบไดนามิกด้วยตัวเอง:
int n = 10;
double* a = new double[n];
หรือยังดีกว่าให้ใช้ภาชนะมาตรฐาน:
int n = 10;
std::vector<double> a(n);
หากคุณยังต้องการอาร์เรย์ที่เหมาะสมคุณสามารถใช้ค่าคงที่ไม่ใช่ตัวแปรเมื่อสร้างได้:
const int n = 10;
double a[n];
ในทำนองเดียวกันหากคุณต้องการรับขนาดจากฟังก์ชันใน C ++ 11 คุณสามารถใช้ a constexpr
:
constexpr int n()
{
return 10;
}
double a[n()];