当前位置: 首页> 健康> 母婴 > 绍兴网站建设做网站_肥城网站建设_职业技能培训网_郑州seo优化大师

绍兴网站建设做网站_肥城网站建设_职业技能培训网_郑州seo优化大师

时间:2025/9/22 6:52:40来源:https://blog.csdn.net/2302_79820965/article/details/146026962 浏览次数:0次
绍兴网站建设做网站_肥城网站建设_职业技能培训网_郑州seo优化大师

static 能用于修饰局部变量,修饰全局变量和修饰函数。

修饰局部变量

static 用于修饰局部变量时,此局部变量就成为静态局部变量。它存储在静态存储区,生命周期是整个程序运行期,仅在第一次函数调用时初始化,后续调用函数不会重新初始化,而是保留上一次调用结束时的值,不过作用域依旧局限于定义它的函数内部。

#include <stdio.h>void test() {static int count = 0;//修饰局部变量count++;printf("count: %d\n", count);
}int main() {test(); //0+1test(); //1+1return 0;
}
//第一次调用 test 函数时初始化为 0 并自增为 1 输出,第二次调用时不会重新初始化为 0,而是保留 1 再自增为 2 输出。
修饰全局变量

static 修饰全局变量,该全局变量会变成静态全局变量。它存储在静态存储区,生命周期是整个程序运行期,但其作用域被限制在定义它的源文件内部,其他源文件无法通过 extern 关键字引用该变量,可避免不同源文件间全局变量命名冲突

                                    // file1.c
#include <stdio.h>int normalGlobalVar = 10;// 普通全局变量
static int staticGlobalVar = 20;// static 修饰的全局变量void printVars() 
{printf("Normal global variable: %d\n", normalGlobalVar);printf("Static global variable: %d\n", staticGlobalVar);
}// file2.c
#include <stdio.h>extern int normalGlobalVar;// 声明外部普通全局变量// 尝试声明外部 static 全局变量(这是错误的,会导致链接错误)
//生命周期是整个程序运行期,但其作用域被限制在定义它的源文件内部,
// extern int staticGlobalVar;int main() {// 可以访问普通全局变量printf("Accessing normal global variable from file2: %d\n", normalGlobalVar);// 调用 file1.c 中的函数extern void printVars();printVars();return 0;
}
  • file1.c 中,normalGlobalVar普通全局变量staticGlobalVarstatic 修饰的全局变量。生命周期是整个程序运行期,但其作用域被限制在定义它的源文件内部.
  • file2.c 中,通过 extern 关键字声明了 normalGlobalVar,可以正常访问该变量。而如果尝试使用 extern 声明 staticGlobalVar 并访问,会导致链接错误,因为 static 修饰的全局变量作用域仅限于 file1.c 文件内部。
  • 模块化编程:在大型项目中,每个源文件可以使用 static 全局变量来存储该模块内部需要共享的数据,避免对其他模块产生影响。
  • 数据隐藏:如果某个全局变量只在一个源文件中使用,为了防止其他文件误操作或访问,可以将其声明为 static 全局变量。
修饰函数

static 修饰函数时,该函数成为静态函数,其作用域被限制在定义它的源文件内部其他源文件无法调用此函数,有助于实现信息隐藏,将函数实现细节封装在源文件内,提高程序模块化程度。

                    // file1.c
#include <stdio.h>
static void staticFunc() 
{printf("This is a static function.\n");
}// file2.c
void callStaticFunc() 
{staticFunc();
}
// extern void staticFunc(); 尝试声明外部静态函数(这是错误的,会导致链接错误)

,因为  static void staticFunc()的作用域仅限于 file1.c 文件内部。

关键字:绍兴网站建设做网站_肥城网站建设_职业技能培训网_郑州seo优化大师

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: