AnT*_*AnT 10
说从外部"无法访问"静态变量是不正确的.被宣布static
与外部访问的可能性完全无关.
当声明某个实体时,static
它仅表示该实体不会与其他翻译单元中的同名实体相关联.
例如,当您以不同的转换单位声明两个extern
变量名称a
时,这些变量实际上是相同的单个变量.当您声明static
以a
不同转换单位命名的两个变量时,这些变量是两个不同的独立变量.这就是static
C中没有的东西.
用日常术语来说,不可能从外部链接到静态变量,即不可能要求链接器让我们从外部按名称访问静态变量.但是,总是可以通过某种其他方式访问它,例如通过指针,假设您设法以某种方式获取该指针.
将静态和外部链接的变量名称分别视为"maddy's house"和"123 foo street"的地址.前者只对了解你的人有意义,而后者对于其他人也有意义,因为既定的惯例.但即使"疯狂的房子"没有街道地址,它仍然有一个经度和经度,你可以给那些想要发射导弹的人.:-)