摘要:目录关键字修饰局部变量修饰全局变量修饰函数关键字修饰局部变量使得局部变量出了自己的范围也不销毁,其实是改变了其生命周期但是作用域还是局部的。
使得局部变量出了自己的范围也不销毁,其实是改变了其生命周期 但是作用域还是局部的。
不使用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;}
总结:
未使用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;
运行出错:
总结:
未使用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;}
运行出错:
总结:
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/122559.html
C语言中static关键字 用static声明限定外部变量与函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分。要降对象指定为静态存储,可以在正常的声明之前加上关键字static作为前缀。 一个声明中最多只能有一个存储类说明符。如果没有指定存储类说明符,则将按照下列规则进行: 在函数内部声明的对象被认为是auto类型; 在函数内部声明的函数被认为是extern类型; 在函数外部声明的对...
摘要:局部变量的作用域是变量所在的局部范围。局部变量的生命周期是进入作用域生命周期开始,出作用域生命周期结束。 目录 1、什么是c语言? 2、数据类型 3、变量、常量 3.1 定义变量的方法 3.2 变量的分类 3.3 变量的作用域和生命周期 3.4定义常量的方法 4、关键字 1、什么是c语言?...
摘要:文章目录多文件问题修饰全局变量和函数修饰局部变量局部变量就是临时的,全局变量就是全局的多文件问题全局变量和函数在另一个文件定义的函数能在其他文件中使用吗可以的在另一个文件定义的全局变量能在其他文件使用吗可以的从上面来看 ...
摘要:局部变量的作用域是变量所在的局部范围。生命周期变量的生命周期变量的创建和销毁之间的时间段局部变量的生命周期进入作用域生命周期开始,出作用域生命周期结束。 前言: 就在前几天,C语言入门到进阶部分的专栏——《维生素C语言》终于完成了。全文共计十八个章节并附带三张笔试练习篇,美中不足的是,第...
阅读 2383·2023-04-26 02:54
阅读 2306·2021-10-14 09:43
阅读 3340·2021-09-22 15:19
阅读 2835·2019-08-30 15:44
阅读 2696·2019-08-30 12:54
阅读 979·2019-08-29 18:43
阅读 1931·2019-08-29 17:12
阅读 1324·2019-08-29 16:40