
正文
c语言函数返回静态变量 c语言静态方法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
有关c语言函数静态变量
静态变量是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,
而且保存了前次被调用后留下的值。
第一个printf(
"%d\n",
func(k+=100)
);
k+=100,k就是200;
x++;
y++;
k++;
x=2,y=11,k=201;
所以第一次打印是214
第二个printf(
"%d\n",
func(k+=100)
);
k+=100,k就是300;
x++;
y++;
k++;
x=2,y=12,k=301;(y是静态变量,原值不变)
所以第二次打印是315
第三个printf(
"%d\n",
func(k+=100)
);
k+=100,k就是400;
x++;
y++;
k++;
x=2,y=13,k=401;(y是静态变量,原值不变)
所以第二次打印是416
相关问答
Q1: c语言中 函数调用结束后,函数内定义的静态变量所
static不是允许修改,你估计和const搞混了,static表示静态存储,直到整个程序结束变量值才会从存储区释放,静态变量又分为全局静态变量和局部静态变量,
全局变量与全局静态变量的区别:
(a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。
(b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。
(c)具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过extern的方式引用;
静态全局变量的作用:
(a)不必担心其它源文件使用相同变量名,彼此相互独立。
(b)在某源文件中定义的静态全局变量不能被其他源文件使用或修改。
(c) 只能在本文件中使用!具有内部链接的静态;不允许在其他文件里调用;
静态局部变量和作用域和局部变量一样,不过生存周期不一样,局部变量在定义局部变量的函数调用完之后就从内存中释放其值,而静态局部变量不释放,等整个程序全部执行结束后才会从内存中释放。
Q2: C语言中函数返回什么类型的变量哪些可以是临时,哪些必须是静态或全局
c语言于函数调用调用前参数值要临存储堆栈区存储值调用刻
参数取值函数使用修改都操作堆栈些值函数返堆栈
些临设参数变量舍弃所些值直接返主程序(实际种
函数参数写返比较特殊)
传入函数参数指针型函数用指针型参数(数组指针)修
改指向存储区些存储区由于堆栈所函数返修改效
使用静态数据情形:静态数据设函数内变量般记录
调用函数状态比记录调用数由于静态变量退函数
丢掉直保存着拿记录调用数说函数知道调用者第几调
用自第调用能需要做些初始化工作
全局变量使用场合:变量许函数都要用全局效呼百应且函数
控制修改变量状态必通参数传递;另种情况数组变量尺
寸比存储图象、语音缓冲区并且使用频繁需要通参数传递占用堆
栈空间反复压栈、栈耗费CPU间
Q3: c语言static的作用和用法
static在c语言中是私有、静态意思。
用于在函数中声明“静态变量”用c语言函数返回静态变量,在每一次调用后c语言函数返回静态变量,该变量并不在函数返回时立即释放,变量中保存c语言函数返回静态变量的值,可以保留到下一次调用时继续有效。
私有就是隐藏。static函数只能声明后的本文中调用。static全局变量只能声明后的本文中调用。static局部变量只能声明后的本函数调用
静态就是一直存在,相对于每次调用动态分配而言。static函数未验证是否每次调用代码地址都是一致的。static全局变量生命周期到程序或进程结束。static局部变量生命周期到程序或进程结束。
static的使用和作用
静态全局变量。全局变量前加static,修饰全局变量为静态全局变量,改变全局变量的可见性。静态局部变量。局部变量前加static,修饰局部变量为静态局部变量,改变局部变量的销毁时期。静态函数。函数返回类型前加static,修饰函数为静态函数,改变函数的可见性。
类的静态成员。类成员前加static,修饰类的成员为类的静态成员,实现多个对象之间的数据共享,并且使用静态成员不会破坏封装性,也保证c语言函数返回静态变量了安全性。类的静态函数,类函数前加static,修饰类的函数为静态函数,减少资源消耗,不需要实例化就可以使用。
Q4: 关于c语言static变量
static即是静态变量,和全局变量的区别是名称的作用域。
实际上生命周期与全局变量是一致的。
所以可以在主调函数中使用被调函数返回的指向其中静态变量的指针。
变量显然是不能被释放的。
由于是静态变量,递归时操作的是同一个变量。
(经查阅ISO C99 J.1-J.2,没有发现关于在函数外使用静态变量是未定义行为的说明。)
Q5: C语言静态变量问题?
static变量
static声明的变量为“静态局部变量”c语言函数返回静态变量,变量内容具有持久性。
该局部变量的值在函数调用结束之后不会消失c语言函数返回静态变量,而仍然保留其原值。即它所占用的存储单元不释放,在下一次调用该函数时,其局部变量的值仍然存在,也就是上一次函数调用结束时的值。
return m++
前置++是用之前就加1,用的人拿到的一定是新值c语言函数返回静态变量;后置++是用完之后才加1,用的人拿到的是旧值.
m++中的加法确实做了,而且是在return之前做的,只不过返回值早就保存好了,而且是m在执行加法之前的值
综述:
第1次:返回0,m变成1
第2次:返回1,m变成2
第3次:返回2,m变成3
第4次:返回3,m变成4
第5次:返回4,m变成5
望采纳
关于c语言函数返回静态变量和c语言静态方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







