黑马程序员技术交流社区

标题: static 和const什么区别。。。 最好对比着说一下 [打印本页]

作者: aSmallStone    时间: 2015-5-26 19:06
标题: static 和const什么区别。。。 最好对比着说一下
static int j;
void fun1(void)
{
static int i = 0;
i ++;
}
void fun2(void)
{
j = 0;
j++;
}
intmain()
{
for(k=0; k<10; k++)
{
fun1();
fun2();
}
return 0;
}
i 和j 的值分别是什么,为什么?

在线等待!

作者: 星空眼泪    时间: 2015-5-26 19:08
你的怎么跟我论坛 问的题目是一样的的?
作者: 星空眼泪    时间: 2015-5-26 19:10
只要理解static 关键字修饰的变量,即使是代码块和函数结束,也会保留之前的的的值,而不会重新初始化,所以I =10,j =1
作者: hehelaicaicai    时间: 2015-5-26 21:54
static 修饰局部变量,会延长局部变量的生命周期,即程序结束时才会被销毁,所以i最后为10
作者: 秦卷卷    时间: 2015-5-27 10:45
原来如此。。。
作者: Residual_mem    时间: 2015-5-27 14:55
会不会被初始化的问题。。
作者: samer123    时间: 2015-5-27 18:35
const 代表的是常量,值不可改变,static静态变量,具有记忆性,而且当其所在的语句块执行结束后,分配的内存不会立即回收,也就是说static变量还存在,嗯就这些,互相学习
作者: samer123    时间: 2015-5-27 19:10
i=1,j的值在fun2()执行完后内存被收回,不存在,你可以断点调试看一下
作者: samer123    时间: 2015-5-27 19:12
额,没看见开始定义了j,这样的话,i=10,j=10,static变量有记忆性
作者: lyricdon    时间: 2015-5-27 21:43
static是静态修饰符,不会因为语句块结束而充值
作者: 飞鱼fly    时间: 2015-5-28 09:20
const用法

6J~A4{KNYI489JW$SF@3%~0.png (286.79 KB, 下载次数: 13)

6J~A4{KNYI489JW$SF@3%~0.png

P~ZCZL[X8O~RJQ%H5R{L4OX.png (223.33 KB, 下载次数: 15)

P~ZCZL[X8O~RJQ%H5R{L4OX.png

作者: talent123    时间: 2015-5-28 21:00
static 全篇用 加1就是1
函数内部的变量 用完就没了 0
const 不变 不能改变值

作者: 宋兴1228    时间: 2015-5-29 21:37
tatic 全篇用 加1就是1
函数内部的变量 用完就没了 0
const 不变 不能改变值
作者: huanleabcd    时间: 2015-5-31 07:36
看看回复,共同学习下
作者: aSmallStone    时间: 2015-5-31 08:56
神回复呢
作者: 追随自然    时间: 2015-5-31 08:58
学到知识了
作者: gamyc    时间: 2015-6-1 17:44
你没写打印printf语句,不知你想在哪里打印,有些位置是不能写打印语句的,在这个程序中,main中是不能写打印语句的,会报错,因为超出了函数内变量的作用域。

若在函数fun1 和fun2内 写打印语句,打印各自函数内的变量值,那么
i为1,2,3,4,5,6,7,8,9,10
j统统为1
作者: 白0702    时间: 2015-6-4 13:38
static修饰变量时该变量不会随着多次调用而被重新初始化,它会保持到程序结束,所以i=9,j=1。我也学习了
作者: 七尺阳光    时间: 2015-6-4 18:03
楼上的都说的很好,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2