Tôi có đoạn mã sau:C++ int a [n] làm việc trong g ++ nhưng không phải với vs2008
...
int n;
cin >> n;
int numbers[n];
...
Nó được biên soạn với NetBeans trên Mac sử dụng g ++ (tôi nghĩ) và nó không biên dịch sử dụng VS2008 trên Các cửa sổ. Tại sao nó khó khăn như vậy để làm cho nó hoạt động với mọi trình biên dịch? Kích thước của mảng được biết trước khi phân bổ nó.
CHỈNH SỬA: Tôi biết về std::vector
. Trên thực tế đây là một phần của một bài tập về nhà và tôi bắt đầu nó tại nơi làm việc trên một mac, sau đó về nhà và đã rất ngạc nhiên rằng nó đã không làm việc trên VS2008. Cảm ơn tất cả các câu trả lời. Nhưng tôi vẫn thấy nó hợp lý rằng nếu trình biên dịch có thể tạo ra một số mã như alloc(123)
nơi giá trị 123 được mã hóa cứng, tại sao nó không thể tạo ra một cái gì đó như alloc(n)
nơi bạn nhận được n
từ địa chỉ bộ nhớ giữ int n
hoặc gì đó. Nó chỉ có vẻ hợp lý hơn để cho phép một cái gì đó như thế này theo mặc định.
tại sao không sử dụng một số công cụ thực tế cpp như 'std :: vector' cho rằng –
@RC: Đó là câu trả lời hay - hãy biến nó thành một thực tế! –
@Drew: done;) thanks –