C语言用静态局部变量来实现
简单跟你说说吧,静态变量是放静态区的,程序结束后os会自动回收内存的,不用你操心。而局部变量不用我说了吧,简单理解成:在大括号中的都是局部变量,放栈区,static是静态变量的标示符。{
static
int
a=0,b=2;
static
int
sum=0,i;
};
这里的a,b,sum,i都是静态局部变量。如果你不写static的话,就是动态局部变量(默认就是动态的),或者你写auto也是动态局部变量。执行到大括号末尾的时候,这几个变量会从内存中消失的。
如果你不是写在大括号中,而是写在外面的,就是全局变量,加上static就是私有的全局变量。
其实你这个问题问得挺幼稚的。。。。
满意请采纳,谢谢
c语言中静态变量是怎么用的
c语言中静态变量作常量使用,用于存储常数。可用const,constant或final等关键字标识,其值就会在编译时设定,并且无法在运行时改变。编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区;而如若有需要,有些编译器还可选择为其开辟专用区。
对于静态全局变量来说,针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域。
扩展资料:
在函数内以static声明的静态局部变量虽然与自动局部变量的作用域相同(即作用域都只限于函数内),但存储空间是以静态分配而非默认的自动分配方式获取的,因而存储空间所在区域不同。
一般来说,静态分配时存储空间于编译时在程序数据段分配,一次分配全程有效;而自动分配时存储空间则是于调用栈上分配,只在调用时分配与释放,且两次调用间变量值始终保持一致;必须注意,静态局部变量只能初始化一次,这是由编译器来保证实现。
c语言中“函数调用结束后,函数内定义的静态变量所占用的空间被释放”这句话正确吗?
不正确,函数内的静态变量在该函数调用结束后,且该函数所在的模块没有被释放的情况下,这个静态变量值为上次函数调用后的值。这样说比较抽象。举例说明一下:\x0d\x0a \x0d\x0avoid AA()\x0d\x0a{\x0d\x0a static int s_iCount; //C语言默认初始化0值\x0d\x0a s_iCount++; //每调用AA()一次,s_iCount会自加一次\x0d\x0a printf(“%d\n”, s_iCount);\x0d\x0a}\x0d\x0a \x0d\x0avoid main()\x0d\x0a{\x0d\x0a AA(); //第一次调用\x0d\x0a AA(); //第二次调用\x0d\x0a}\x0d\x0a \x0d\x0a运行输出:\x0d\x0a1\x0d\x0a2\x0d\x0a \x0d\x0a说明:AA()中的 s_iCount,只能在AA()中访问操作,不能在其外的函数中操作,也不能在main()中直接访问。
c语言中 函数调用结束后,函数内定义的静态变量所
函数内定义的静态变量,形式上是局部变量,但与一般局部变量不同:
1、一般的局部变量在函数结束后就释放了,下次调用时重新申请空间;
2、“静态局部”变量,在函数调用结束后,空间不释放,保留结束前的值,直到下次调用时作为初值使用,要到整个程序退出时才释放
c语言中 函数调用结束后,函数内定义的静态变量所占用的空间被释放 这句话正确吗?求解释
错误!
第一,对于动态存储方式,在函数调用开始时分配动态存储空间,函数结束时释放这些空间,例如传值的函数调用,int x=3,y=4; fun(x,y)//函数里x=4,y=3 ;函数调用结束后释放,main函数仍然是x=3,y=4
第二,在静态存储区内分配的存储单元,在程序整个运行期间都不释放,若非必要,尽量不要静态变量
int main()
{ int f(int);
int a=2,i;
for(i=0;i3;i++)
printf(“%d\n”,f(a));
return 0;
}
int f(int a)
{ auto int b=0;//自动局部变量
static c =3;//静态局部变量
b=b+1;
c=c+1;
return(a+b+c);
}
输出为 7(2+1+4) 8(2+1+5) 9(2+1+6)
c语言static的作用和用法
static在c语言中是私有、静态意思。
用于在函数中声明“静态变量”用,在每一次调用后,该变量并不在函数返回时立即释放,变量中保存的值,可以保留到下一次调用时继续有效。
私有就是隐藏。static函数只能声明后的本文中调用。static全局变量只能声明后的本文中调用。static局部变量只能声明后的本函数调用
静态就是一直存在,相对于每次调用动态分配而言。static函数未验证是否每次调用代码地址都是一致的。static全局变量生命周期到程序或进程结束。static局部变量生命周期到程序或进程结束。
static的使用和作用
静态全局变量。全局变量前加static,修饰全局变量为静态全局变量,改变全局变量的可见性。静态局部变量。局部变量前加static,修饰局部变量为静态局部变量,改变局部变量的销毁时期。静态函数。函数返回类型前加static,修饰函数为静态函数,改变函数的可见性。
类的静态成员。类成员前加static,修饰类的成员为类的静态成员,实现多个对象之间的数据共享,并且使用静态成员不会破坏封装性,也保证了安全性。类的静态函数,类函数前加static,修饰类的函数为静态函数,减少资源消耗,不需要实例化就可以使用。