c语言中 static 和 void
时间: 2024-06-04 12:08:08 浏览: 20
`static` 和 `void` 是 C 语言中的两个关键字,含义不同。
`static` 关键字可以用于变量、函数和结构体等数据类型中。它的主要作用是改变变量或函数的存储类别和作用域。当 `static` 修饰变量时,该变量被分配在静态存储区,只会在第一次调用时初始化,之后的值会一直保留,直到程序结束。当 `static` 修饰函数时,该函数被限制在当前源文件中调用,不能被其他源文件调用。
`void` 关键字用于函数的参数列表中,表示该函数不接受任何参数。同时,`void` 也可以用于函数返回类型中,表示该函数没有返回值。例如,`void func()` 表示这是一个没有参数,也没有返回值的函数。
相关问题
c语言中static
在C语言中,关键字static用于静态变量、静态函数和静态全局变量的声明。下面是这些用法的简要说明:
1. 静态变量:当在函数内部声明一个静态变量时,该变量的生命周期会延长到整个程序运行期间。这意味着,即使函数执行完毕,该变量的值也会被保留下来,并在下一次调用该函数时继续使用。静态变量默认初始化为0。
```c
int myFunction() {
static int count = 0; // 静态变量声明和初始化
count++;
return count;
}
```
2. 静态函数:静态函数只在声明它的源文件中可见,不能被其他源文件调用。这种函数的主要作用是将某些功能封装在一个源文件中,并避免与其他源文件中的同名函数产生冲突。
```c
static void myFunction() {
// 函数的实现
}
```
3. 静态全局变量:静态全局变量与普通全局变量的区别在于,静态全局变量只能在声明它的源文件中访问,其他源文件无法直接访问。这样可以限制变量的作用域,避免在不同源文件之间产生命名冲突。
```c
static int count = 0; // 静态全局变量
```
需要注意的是,静态变量和静态函数不会在进入函数时被重新初始化,而静态全局变量在程序启动时就已经初始化,并且只能在声明它的源文件中使用。
c语言中static的用法
在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关键字的用法主要是用于声明静态变量、静态函数、静态全局变量等,可以用于限制变量或函数的作用域,或者用于记忆化计算等场景。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)