在C中staticextern的区别是什么?

c

推荐答案

http://wiki.answers.com/Q/What_is_the_difference_between_static_and_extern开始:

static存储类用于声明标识符,该标识符是函数或文件的局部变量,并且在控制从声明的位置传递后存在并保留其值.此存储类的持续时间是永久性的.从函数的一次调用到下一次调用,该类声明的变量将保留其值.作用域是本地的.变量仅由它在其中声明的函数知道,或者如果在文件中全局声明,则它只由该文件中的函数知道或可见.此存储类保证变量的声明还会将变量初始化为零或全部关闭.

extern存储类用于声明一个全局变量,该变量将为文件中的函数所知,并且能够为程序中的所有函数所知.此存储类的持续时间是永久的.此类的任何变量都保留其值,直到被另一个赋值更改为止.其范围是全球性的.程序中的所有函数都可以知道或看到一个变量.

C++相关问答推荐

“C”中函数内部的数据操作

从带有句点的文件中读取数字(整数和小数)作为分隔符

关于函数中返回局部指针变量的问题

在 c 标头中使用 c++ 标头中的枚举类

引用如何出现在可从 C 代码调用的函数的签名中?

如何检测非 IEEE-754 浮点数,以及如何使用它们?

从数组伪排序

C中指向结构的指针与指向数组的指针

使用整数存储许多布尔值是否值得?

如何仅使用互斥锁来解决哲学家进餐问题?

OpenSSL 3 Diffie-Hellman 密钥交换 C++

使用 strstr 查找子字符串的所有实例会导致奇怪的字符串格式

使用 -O3 的冒泡排序比使用 GCC 的 -O2 慢

是否使用 if (0) 跳过应该工作的switch 中的一个 case ?

我们可以在变量名中写注释吗?

为什么需要为每个操作系统重新编译 C/C++?

((void (*)())buf)(); 是什么意思?意思是?

并行将 64 位整数中的压缩 8 位整数减 1,没有硬件 SIMD 的 SWAR

为什么我应该总是启用编译器警告?

在 POSIX 系统上 argc 可以为零吗?