【发布时间】:2013-01-16 07:42:42
【问题描述】:
我知道C中静态函数和普通函数的区别,我的问题是:静态函数中声明的变量和C中普通函数中声明的变量有什么区别吗?
谢谢。
【问题讨论】:
-
你说的是静态和普通函数中的普通变量还是静态和普通函数中的静态和普通变量?我在这里有点困惑。
-
我指的是静态和普通函数中的普通变量。
我知道C中静态函数和普通函数的区别,我的问题是:静态函数中声明的变量和C中普通函数中声明的变量有什么区别吗?
谢谢。
【问题讨论】:
静态函数中声明的变量和C中普通函数中声明的变量有区别吗?
答案:NO 没有区别
【讨论】:
函数中声明的变量与其存储类类型无关。函数中定义的所有变量(静态或非静态)都将定义其范围,直到函数退出。 然而,一个函数是否为静态只会定义它对其他文件的可见性。
【讨论】:
不,static 关键字仅适用于应用于函数时的可见性。
函数的static 关键字告诉编译器/链接器该函数不应在文件外可见。当应用于函数时,C 中的 static 等效于 Java 或 C++ 等语言中的 private。
【讨论】:
static 关键字告诉编译器/链接器该函数不应该在类外可见 不,这是不正确的。 static C++ 中的函数与访问规范无关。访问说明符就是这样做的。 C 中的static 控制链接。它为函数提供了一个内部链接(默认链接是外部的)。内部链接限制了同一翻译单元中函数/变量的范围和可见性。
两个变量都是automatic,因此它们都分配在堆栈上。
【讨论】:
静态函数中使用的术语static 使该函数的作用域仅适用于特定的.c 文件。这不会对该静态函数中声明的变量(auto、static 或 register)做任何事情。
【讨论】: