资讯专栏INFORMATION COLUMN

C语言static关键字

LoftySoul / 2138人阅读

摘要:目录关键字修饰局部变量修饰全局变量修饰函数关键字修饰局部变量使得局部变量出了自己的范围也不销毁,其实是改变了其生命周期但是作用域还是局部的。

static关键字

  1. static修饰局部变量

使得局部变量出了自己的范围也不销毁,其实是改变了其生命周期 但是作用域还是局部的。

  1. static修饰全局变量
  2. static修饰函数

修饰局部变量

不使用static修饰局部变量:

void test() {	int a = 1;	a++;	printf("%d/n", a);}int main() {	int i = 0;	while (i < 10) {		test();		i++;	}	return 0;}

使用static修饰局部变量:

void test() {	static int a = 1;	a++;	printf("%d/n", a);}int main() {	int i = 0;	while (i < 10) {		test();		i++;	}	return 0;}


总结:

  1. 使得局部变量出了自己的范围也不销毁,其实是改变了其生命周期
  2. 但是作用域还是局部的。

修饰全局变量

未使用static修饰全局变量:
test.c文件:

extern int g_val;//声明外部变量,在add.c中定义变量,int main() {	printf("%d/n", g_val);	return 0;}

add.c文件:

int g_val = 200;

使用static修饰全局变量:
test.c文件:

extern int g_val;//声明外部变量,在add.c中定义变量,int main() {	printf("%d/n", g_val);	return 0;}

add.c文件:

static int g_val = 200;

运行出错:

总结:

  1. 全局变量,本身具有外部链接属性
  2. 如果全局变量在源文件是静态的static,会使得全局变量失去外部链接属性
  3. 变成内部链接属性,只能在本来的.c文件使用

修饰函数

未使用static关键字:
//声明外部符号
test.c文件:

extern Add(int x,int y);int main() {	int a = 10;	int b = 20;	int ret = Add(a, b);	printf("%d/n", ret);	return 0;}

add.c文件:

int Add(int x, int y) {//int表示函数调用返回int变量	int z = x + y;	return z;}

使用static关键字:
//声明外部符号
test.c文件:

extern Add(int x,int y);int main() {	int a = 10;	int b = 20;	int ret = Add(a, b);	printf("%d/n", ret);	return 0;}

add.c文件:

static int Add(int x, int y) {//不能被外部.cpp文件调用	int z = x + y;	return z;}

运行出错:

总结:

  1. 函数默认具有外部链接属性,但是被static修饰后,
  2. 会使得函数失去外部连接属性,变成内部链接属性
  3. static修饰的函数只能在自己所在的.c文件使用
  4. 不能在其他.c文件使用

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/122559.html

相关文章

  • 【⛳重走长征路のC语言中static键字⛳】

    C语言中static关键字 用static声明限定外部变量与函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分。要降对象指定为静态存储,可以在正常的声明之前加上关键字static作为前缀。 一个声明中最多只能有一个存储类说明符。如果没有指定存储类说明符,则将按照下列规则进行: 在函数内部声明的对象被认为是auto类型; 在函数内部声明的函数被认为是extern类型; 在函数外部声明的对...

    stormzhang 评论0 收藏0
  • 一、初识c语言

    摘要:局部变量的作用域是变量所在的局部范围。局部变量的生命周期是进入作用域生命周期开始,出作用域生命周期结束。 目录 1、什么是c语言? 2、数据类型 3、变量、常量 3.1 定义变量的方法 3.2 变量的分类 3.3 变量的作用域和生命周期 3.4定义常量的方法 4、关键字 1、什么是c语言?...

    MingjunYang 评论0 收藏0
  • C语言深刨_键字2——static sizeof

    摘要:文章目录多文件问题修饰全局变量和函数修饰局部变量局部变量就是临时的,全局变量就是全局的多文件问题全局变量和函数在另一个文件定义的函数能在其他文件中使用吗可以的在另一个文件定义的全局变量能在其他文件使用吗可以的从上面来看 ...

    Worktile 评论0 收藏0
  • Effective C++读书笔记(1)

    摘要:给出了个改善程序的具体建议,并且提出了一些在程序设计中经常出现的坑。的泛型编程部分,就是的函数模板类模板,它们使得泛型编程成为可能。另外,需要注意的是在类中对参数的初始化,一般来说,常量值使用声明式在头文件中完成声明。   写在前面:之前一直有在写博客,但是总是没坚持下来,感觉博客作为记录自己学习过程的工具还是十分有意义的,故而决定在这儿开始我博客之路的第一步,以C++的学习为始,从得...

    xiangchaobin 评论0 收藏0
  • 【简单地过一遍C语言基础部分】所有知识点,点到为止!(仅一万多字)

    摘要:局部变量的作用域是变量所在的局部范围。生命周期变量的生命周期变量的创建和销毁之间的时间段局部变量的生命周期进入作用域生命周期开始,出作用域生命周期结束。 前言: 就在前几天,C语言入门到进阶部分的专栏——《维生素C语言》终于完成了。全文共计十八个章节并附带三张笔试练习篇,美中不足的是,第...

    chaos_G 评论0 收藏0

发表评论

0条评论

LoftySoul

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<