Tôi biết trong C rằng tôi có thể làm như sau.Khởi tạo mảng C tại thời điểm khác với khai báo?
int test[5] = {1, 2, 3, 4, 5};
Bây giờ điều này chỉ hợp pháp khi khai báo mảng. Tuy nhiên tôi đã tự hỏi tại sao điều này là không hợp pháp để làm sau này? Nhưng sau đó trong chương trình nó không phải là hợp pháp để làm như sau.
test[5] = {10, 20, 30, 40, 50};
Hoặc tương tự. Tại sao điều này? Tôi biết nó không hợp pháp, và tôi không phàn nàn, nhưng ai đó có thể cho tôi một giải thích kỹ thuật hơn về lý do tại sao tôi không thể làm điều này? (nghĩa là không chỉ nói thông số C không cho phép nó hoặc một cái gì đó như thế)
Tôi giả định nó phải làm điều gì đó với thời gian khi bộ nhớ được cấp phát trên ngăn xếp cho mảng, vì vậy tại thời điểm đó C có thể tự động điền vào các giá trị của tôi, nhưng sau đó tại sao nó không thể làm điều đó sau này?
Thanks guys
Vì vậy, nếu, giả thuyết, đó là trường hợp đó các tiêu chuẩn C chỉ sẽ không cho phép điều này (mặc dù nó sẽ là về mặt kỹ thuật có thể), chúng tôi sẽ phải làm một cái gì đó khác nhau lên thay vào đó? Hay bạn không muốn nhận được câu trả lời nào cả? Chỉ muốn chắc chắn. –
@NiklasB .: Tôi đoán trong trường hợp đó, một người được cho là có lý trí để * tại sao * các nhà thiết kế ngôn ngữ C đã quyết định bỏ qua tính năng này sẽ là một câu trả lời. – Heinzi
@Heinzi: Ồ, tôi hiểu rồi :) –