可以,static在C语言中是表示一个变量为静态变量的,而不是常量,也不是不可变的变量。所谓的静态变量有两种情况,一种是静态全局变量,一种是静态局部变量。先说静态局部变量:通常情况下,在一个函数中定义一个变量,那么函数退出之后,这个变量就消失了,即使你第二次调用这个函数,里面的变量也会被...
首先static变量不是全局变量,全局变量在整个程序中均可见。且可以在整个程序的任何位置进行修改。而static变量,只在声明它的函数内看见,也只有在声明它的函数内可以被修改。即便在函数外或其它函数中有同名的变量,也和它不是同一变量。和局部变量相比,局部变量在每次调用函数时,变量值都会重置。而stati...
而如果说你让int a这种随意的变量放置到全局,就是一个灾难,会出现莫名奇妙被修改,找半天找不到被谁修改的问题。 说完了全局变量,全局函数前面加static,下来说下函数内部,添加static的妙用。 函数中的局部变量,默认是都在栈上面,这类变量最大的特点就是,函数返回之后,这段区域就会被其他函数调用时覆盖,重复利用,...
常量是不可更改的变量,即在一开始定义后,就不可以再直接修改了。且常量在定义的同时就要进行初始化,否则就是错误的。例如,将一个变量 a 通过 const 定义为常量,并给它初始化一个值为 1。后面想通过赋值运算符来修改常量 a 的值,就不能了。那么,常量的值就一定不能修改吗?也不一定,C 语言中有一个...
没有使用static修饰变量,程序正常运行 使用static修饰全局变量,这个时候程序执行出错 全局变量是具有外部链接属性的,外部链接属性是指在创建的项目里面,其中一个源文件(.c文件)里面设置的全局变量可以在其他的源文件里面使用。但是,如果使用static修饰全局变量,全局变量的外部链接属性会变成内部链接属性,导致其他得源文件就...
将上面的函数修改为可重入的函数很简单,只要将声明sum变量中的static关键字去掉,变量sum即变为一个auto 类型的变量,函数即变为一个可重入的函数。 当然,有些时候,在函数中是必须要使用static变量的,比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。
要清零静态变量,可以使用赋值操作符将其值设置为0。在函数内部,可以通过赋值语句将静态变量的值重置为0,从而达到清零的效果。例如,可以使用以下代码清零一个静态变量: ```c void resetStaticVariable() { static int count = 0; count = 0; // 清零静态变量 } ``` 在上述代码中,函数`resetStaticVariable`中...
从这里终于也能知道一个东西的原因了,那就是为啥被static修饰的局部变量的值可以被重复的访问和修改 常见的代码栗子如下: //main.cpp#include<iostream>usingnamespacestd;voidtest(){staticinta=0;cout<<"a = "<<a++<<endl;}intmain(intargc,constchar*argv[]){for(inti=0;i<20;i++){test();}return...