Lưu ý rằng câu hỏi này ban đầu được đăng vào năm 2009, trước khi C ++ 11 được phê chuẩn và trước khi ý nghĩa của
auto
từ khóa bị thay đổi đáng kể. Các câu trả lời được cung cấp chỉ liên quan đến ý nghĩa C ++ 03 củaauto
- đó là một lớp lưu trữ được chỉ định - chứ không phải ý nghĩa của C ++ 11auto
- đó là loại trừ tự động. Nếu bạn đang tìm kiếm lời khuyên về thời điểm sử dụng C ++ 11auto
, câu hỏi này không liên quan đến câu hỏi đó.
Trong thời gian dài nhất, tôi nghĩ rằng không có lý do gì để sử dụng static
từ khóa trong C, bởi vì các biến được khai báo bên ngoài phạm vi khối hoàn toàn là toàn cục. Sau đó, tôi phát hiện ra rằng việc khai báo một biến như static
trong phạm vi khối sẽ cung cấp cho nó thời hạn vĩnh viễn và khai báo nó bên ngoài phạm vi khối (trong phạm vi chương trình) sẽ cung cấp cho nó phạm vi tệp (chỉ có thể được truy cập trong đơn vị biên dịch đó).
Vì vậy, điều này khiến tôi chỉ có một từ khóa mà tôi (có thể) chưa hiểu hết: auto
Từ khóa. Có một số ý nghĩa khác với nó ngoài 'biến cục bộ không?' Bất cứ điều gì nó không hoàn toàn được thực hiện cho bạn ở bất cứ nơi nào bạn có thể muốn sử dụng nó? Làm thế nào để một auto
biến hoạt động trong phạm vi chương trình? Gì của một static auto
biến trong file-phạm vi? Từ khóa này có bất kỳ mục đích nào khác ngoài mục đích tồn tại cho sự hoàn chỉnh ?