c中的静态变量

5 c variables

无法从文件外部访问在文件中声明的静态变量.但是如果我们在文件和全局指针中声明一个静态变量,然后将静态变量的地址分配给指针,然后将指针外部化,则可以访问它.

所以说不能直接访问静态变量但是可以使用全局指针间接访问静态变量然后进行外设吗?

AnT*_*AnT 10

说从外部"无法访问"静态变量是不正确的.被宣布static与外部访问的可能性完全无关.

当声明某个实体时,static它仅表示该实体不会与其他翻译单元中的同名实体相关联.

例如,当您以不同的转换单位声明两个extern变量名称a时,这些变量实际上是相同的单个变量.当您声明statica不同转换单位命名的两个变量时,这些变量是两个不同的独立变量.这就是staticC中没有的东西.

用日常术语来说,不可能从外部链接到静态变量,即不可能要求链接器让我们从外部按名称访问静态变量.但是,总是可以通过某种其他方式访问它,例如通过指针,假设您设法以某种方式获取该指针.

  • @SiegeX:具有*静态存储持续时间*的所有对象都被初始化为0.但是为了具有静态存储持续时间,对象不一定必须被声明为"静态".换句话说,0初始化与关键字"static"不直接相关.0初始化是特定*存储持续时间*的结果.问题(我看到它的方式)实际上是关于*联系*. (3认同)

R..*_*R.. 6

将静态和外部链接的变量名称分别视为"maddy's house"和"123 foo street"的地址.前者只对了解你的人有意义,而后者对于其他人也有意义,因为既定的惯例.但即使"疯狂的房子"没有街道地址,它仍然有一个经度和经度,你可以给那些想要发射导弹的人.:-)


Ign*_*ams 1

如果有指向进程中的指针,则可以访问进程中的任何内容,除非用于限制访问的特定于体系结构的机制。冗余地说可以通过指针访问变量是多余的。