十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
静态变量,就是在定义的时候,有static 修饰的变量,形式为
创新互联建站是一家专注于成都网站建设、网站制作与策划设计,华龙网站建设哪家好?创新互联建站做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:华龙等地区。华龙做网站价格咨询:028-86922220
static TYPE var_name = init_value;
而动态变量,形式为
TYPE var_name = init_value;
即没有static 修饰。其中的=init_value均可省略。
区分定义在函数外的全局变量,和函数内的局部变量,作用域,生命周期,及无显式初始化时的初始值,均有区别。
1 动态全局变量:
作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量。
生命周期为从程序运行到程序退出,即贯穿整个运行时间。
无显式初始化时默认初始化值为0。
2 静态全局变量:
作用域为当前文件,从定义/声明位置到文件结尾。
生命周期为从程序运行到程序退出,即贯穿整个运行时间。
无显式初始化时默认初始化值为0。
3 动态局部变量:
作用域为当前函数,从定义位置,到其所在的{}的结束位置。
生命周期为从函数调用到函数退出。
无显式初始化时默认初始化值为随机值。
4 静态局部变量:
作用域为当前函数,从定义位置,到其所在的{}的结束位置。
生命周期为从程序运行到程序退出,即贯穿整个运行时间,当下次函数调用时,静态局部变量不会被再次初始化,而是沿用上次函数退出时的值。
无显式初始化时默认初始化值为0。
C语言中用static修饰后的函数只能在当前的.c文件中使用,无法给外部调用。
就比如我们常加头文件stdio.h,如果里面的printf函数用了static修饰的话,我们就不能调用这个函数了
普通函数和static修饰的函数没什么区别,但是普通函数可以通过使用extern声明为外部函数,这样其他.c文件通过添加.h头文件就可以调用里面的普通函数了
int。C语言规定:在定义函数时,若其返回值类型为int,则可以默认。
C语言函数有三类,分为外部函数、静态函数、内联函数,其中前两种是C89标准支持,第三种是C99标准增加的。
1、外部函数
这类函数是默认的函数类型,基本上平时我们使用的就是这种函数,声明有以下两种方式,例如:
// 使用extern关键字,显示声明
extern int add(int a, int b);
// 或省略关键字extern,编译器也会自动认为是extern
int add(int a, int b);
外部函数表明在当前声明和定义的代码文件中可以使用,也可以在其它代码文件中可以通过#include指令包含使用,对外部的代码可见。
2、静态函数
这类函数其实与外部函数相对的,因为需要使用static关键字修饰,因此称为静态函数,其实就是内部函数。声明方式如下,例如:
static int add(int a, int b);
静态函数的作用域只能在当前声明和定义的文件中,在其它代码文件中无法#include使用,因此在整个程序中,特别是大型程序,有多个源代码文件时,即使定义相同名称的两个静态函数,也不会有命名和使用冲突。
3、内联函数
是新增的特性,使用inline关键字声明和定义,该类函数类似#define宏定义展开,编译时会直接将函数定义代码在调用的地方复制展开,这样会减少函数调用的开销,提高运行效率。
inline int add(int a, int b);
内联函数适合短小的、被频繁调用的函数,对于复杂函数,无法使用。
扩展资料:
C语言编写注意事项:
1、const在声明变量中起限制作用, 该限定变量的值不能被修改。
2、%运算符不能应用与float或double类型。
3、char类型转换为int型时, 无法判断它是signed还是unsigned.这样其结果有可能为负数, 因此转换时尽量指定signed和unsigned限制符。
4、++i与i++不同之处: ++i是先+1在使用, i++是先使用i在递加1。
5、三元运算符"?:" 第一个表达式的括号不是必须的,但是由于三元表达式的优先级非常低,我们还是将第一个表达式用()括起便于阅读和理解。
6、C语言中可以使用递归 (即函数调用自身函数), 其不节省储存器开销也不加快执行速度, 只是使程序紧凑便于理解。
动态函数执行结束后,函数占用的内存会被注销掉,数值不保留,静态就可以保留数值
static在c语言中是私有、静态意思。
用于在函数中声明“静态变量”用,在每一次调用后,该变量并不在函数返回时立即释放,变量中保存的值,可以保留到下一次调用时继续有效。
私有就是隐藏。static函数只能声明后的本文中调用。static全局变量只能声明后的本文中调用。static局部变量只能声明后的本函数调用
静态就是一直存在,相对于每次调用动态分配而言。static函数未验证是否每次调用代码地址都是一致的。static全局变量生命周期到程序或进程结束。static局部变量生命周期到程序或进程结束。
static的使用和作用
静态全局变量。全局变量前加static,修饰全局变量为静态全局变量,改变全局变量的可见性。静态局部变量。局部变量前加static,修饰局部变量为静态局部变量,改变局部变量的销毁时期。静态函数。函数返回类型前加static,修饰函数为静态函数,改变函数的可见性。
类的静态成员。类成员前加static,修饰类的成员为类的静态成员,实现多个对象之间的数据共享,并且使用静态成员不会破坏封装性,也保证了安全性。类的静态函数,类函数前加static,修饰类的函数为静态函数,减少资源消耗,不需要实例化就可以使用。
一、形式不同:
静态变量是在定义的时候,有static 修饰的变量,形式为static TYPE var_name = init_value;
动态变量,形式为TYPE var_name = init_value;即没有static 修饰,其中的=init_value均可省略。
二、作用不同:
动态全局变量:作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量,生命周期为从程序运行到程序退出,即贯穿整个运行时间。
静态全局变量:作用域为当前文件,从定义/声明位置到文件结尾,生命周期为从程序运行到程序退出,即贯穿整个运行时间。
常量使用
静态变量也可以用于存储常数。具体来说,静态变量(全局变量及汇编语言里定义的符号亦同)可用const,constant或final(根据语言决定)等关键字标识,这时其值就会在编译时设定,并且无法在运行时改变。
编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区;而如若有需要,有些编译器还可选择为其开辟专用区;为防止常数变量被错误的指针写入覆盖,亦可在这块区域启用内存保护机制。
以上内容参考:百度百科-静态变量