Không đúng khi nói rằng các biến tĩnh "không thể truy cập được" từ bên ngoài. Bị tuyên bố static
hoàn toàn không liên quan gì tới khả năng truy cập bên ngoài.
Khi một số thực thể được khai báo static
, điều này chỉ có nghĩa là pháp nhân này sẽ không được liên kết với các pháp nhân khác cùng tên trong các đơn vị dịch thuật khác.
Ví dụ: khi bạn khai báo hai tên extern
biến tên a
trong các đơn vị dịch khác nhau, các biến này thực tế là cùng một biến duy nhất. Khi bạn khai báo hai biến số static
có tên là a
trong các đơn vị dịch khác nhau, các biến này là hai biến độc lập khác nhau. Đây là những gì static
làm trong C. Không có gì khác.
Phát biểu về hàng ngày hơn, nó không thể liên kết để biến tĩnh từ bên ngoài, tức là nó không thể hỏi mối liên kết để cho chúng tôi truy cập vào tĩnh biến theo tên từ bên ngoài. Tuy nhiên, nó luôn luôn có thể truy cập nó theo một cách khác, như thông qua một con trỏ, giả sử rằng bạn quản lý để có được con trỏ đó bằng cách nào đó.
Câu hỏi phải ở trong stackoverflow vì đó là về lập trình – Mark
+1 cho câu hỏi này.Không bao giờ nghĩ về nó :) – hari
Bạn thậm chí không cần một con trỏ 'extern' để" truy cập "biến. Một con trỏ tới biến cũng có thể được trả về từ một hàm, hoặc được gán cho một con trỏ trỏ tới con trỏ. – aschepler