C语言中static的用法小结

1、声明了static的变量称为静态变量,根据作用域的不同又分为静态局部变量与静态全局变量。其中静态局部变量是在函数内声明的static变量,静态全局变量是在函数外声明的static变量。虽然作用域不同,但是都是在编译期间分配内存,使用静态存储的方式(其值存放在静态存储区),在程序整个执行期间都是存在的。它们之间的区别是:
a、静态局部变量的作用域仅限于其所在的函数,在函数外无法对该变量进行访问。此外,该变量的值在该函数退出时依然存在,并且下次调用该函数时使用的是上次保存的值;
b、静态全局变量的作用域仅限于其所在的文件模块,在其它文件模块中无法访问该变量。
2、声明了static的函数又称为静态函数或内部函数,其作用与静态全局变量差不多:其作用域仅限于其所在的文件模块,在其它文件模块中无法调用该函数(相对于其它文件块是不可见的);
3、全局变量没有使用static关键字也是静态存储(其值存放在静态存储区),也是在编译时分配内存,并且其值在整个程序执行其间都是存在的。它与使用static关键字的静态全局变量唯一的不同在于作用域:它对其它文件模块是可见的,而静态全局变量只对其所在的文件模块可见。
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言static关键字可以用于以下几个方面: 1. 声明静态变量 使用static关键字声明的变量被称为静态变量,与普通变量不同的是,静态变量在程序运行期间只会被初始化一次,而且只能在定义它的函数或文件访问,不能被其他文件访问。 示例代码: ``` void func() { static int count = 0; count++; printf("count = %d\n", count); } int main() { func(); // count = 1 func(); // count = 2 func(); // count = 3 return 0; } ``` 2. 声明静态函数 使用static关键字声明的函数被称为静态函数,与普通函数不同的是,静态函数只能在定义它的文件访问,不能被其他文件访问。 示例代码: ``` static void func() { printf("this is a static function\n"); } int main() { func(); // this is a static function return 0; } ``` 3. 声明静态全局变量 在文件作用域内使用static关键字声明的变量被称为静态全局变量,与普通全局变量不同的是,静态全局变量只能在定义它的文件访问,不能被其他文件访问。 示例代码: ``` static int count = 0; void func() { count++; printf("count = %d\n", count); } int main() { func(); // count = 1 func(); // count = 2 func(); // count = 3 return 0; } ``` 4. 声明静态类成员 在C++,使用static关键字可以声明静态类成员,与普通类成员不同的是,静态类成员不属于类对象,而是属于整个类,只有一个副本,可以在不创建对象的情况下访问。 示例代码: ``` class MyClass { public: static int count; }; int MyClass::count = 0; int main() { MyClass::count++; printf("count = %d\n", MyClass::count); return 0; } ``` 所以,在C语言static关键字的用法主要是用于声明静态变量、静态函数、静态全局变量等,可以用于限制变量或函数的作用域,或者用于记忆化计算等场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值