A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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 的值分别是什么,为什么?

在线等待!

18 个回复

倒序浏览
你的怎么跟我论坛 问的题目是一样的的?
回复 使用道具 举报
只要理解static 关键字修饰的变量,即使是代码块和函数结束,也会保留之前的的的值,而不会重新初始化,所以I =10,j =1
回复 使用道具 举报
static 修饰局部变量,会延长局部变量的生命周期,即程序结束时才会被销毁,所以i最后为10
回复 使用道具 举报
原来如此。。。
回复 使用道具 举报
会不会被初始化的问题。。
回复 使用道具 举报
const 代表的是常量,值不可改变,static静态变量,具有记忆性,而且当其所在的语句块执行结束后,分配的内存不会立即回收,也就是说static变量还存在,嗯就这些,互相学习
回复 使用道具 举报
i=1,j的值在fun2()执行完后内存被收回,不存在,你可以断点调试看一下
回复 使用道具 举报
额,没看见开始定义了j,这样的话,i=10,j=10,static变量有记忆性
回复 使用道具 举报
static是静态修饰符,不会因为语句块结束而充值
回复 使用道具 举报
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, 下载次数: 16)

P~ZCZL[X8O~RJQ%H5R{L4OX.png
回复 使用道具 举报
static 全篇用 加1就是1
函数内部的变量 用完就没了 0
const 不变 不能改变值
回复 使用道具 举报
tatic 全篇用 加1就是1
函数内部的变量 用完就没了 0
const 不变 不能改变值
回复 使用道具 举报
看看回复,共同学习下
回复 使用道具 举报
神回复呢
回复 使用道具 举报
学到知识了
回复 使用道具 举报
你没写打印printf语句,不知你想在哪里打印,有些位置是不能写打印语句的,在这个程序中,main中是不能写打印语句的,会报错,因为超出了函数内变量的作用域。

若在函数fun1 和fun2内 写打印语句,打印各自函数内的变量值,那么
i为1,2,3,4,5,6,7,8,9,10
j统统为1
回复 使用道具 举报
static修饰变量时该变量不会随着多次调用而被重新初始化,它会保持到程序结束,所以i=9,j=1。我也学习了
回复 使用道具 举报
楼上的都说的很好,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马