Trình lập trình công bằng mới ở đây và lời xin lỗi trước cho các câu hỏi ngớ ngẩn.Biến là chỉ đọc sau khi gán vào thời gian chạy?
Tôi có biến số int
trong một chương trình mà tôi sử dụng để xác định độ dài mảng của tôi nên ở trong một số cấu trúc của tôi. Tôi đã sử dụng để đặt nó trong tiêu đề của tôi như là một const int
. Bây giờ, tôi muốn nĩa chương trình của tôi để cung cấp cho các biến giá trị khác nhau tùy thuộc vào các đối số được đưa ra trong, nhưng giữ nó chỉ đọc sau khi tôi gán nó vào thời gian chạy.
Một vài ý tưởng tôi đã phải làm điều này. Có cách nào ưu tiên không?
- Khai báo một
const int *
trong tiêu đề của tôi và gán nó vàoconst int
trong chức năng chính của tôi, nhưng điều đó có vẻ khó khăn. - Biến nó thành một đồng bằng
int
trong chức năng chính của tôi. - Chuyển biến làm đối số khi hàm được gọi.
- Điều gì đó khác mà tôi chưa từng nghĩ đến.
Nếu bạn định sử dụng biến này để tạo các mảng có kích thước biến tại thời gian chạy, thì đây không phải là chuẩn C++. Tiêu chuẩn C++ không cho phép ** Các mảng độ dài thay đổi (VLA) **. Vì vậy, độ dài của mảng phải là một hằng số thời gian biên dịch. –
@Als: Tôi đang tạo các mảng có độ dài không đổi, nhưng tôi không chắc chắn chiều dài là bao lâu cho đến khi chạy. –
@BlueMagister: Sau đó, chúng không liên tục. "hằng" trong ngữ cảnh này có nghĩa là "hằng số biên dịch-thời gian". Bạn không thể đưa ra một mảng (trừ khi bạn phân bổ nó bằng 'mới') một kích thước không biên dịch trong C++.Bạn phải sử dụng 'std :: vector' hoặc phân bổ nó bằng' new'. –