注册 登录
编程论坛 C语言论坛

C语言小白,请给大神讲解下面程序,对于输出结果不是很理解~

DHZFSYJ 发布于 2019-07-11 14:28, 1465 次点击
程序代码:
int k;
static int j;
void fun1(void)
{
    static int i = 0;
    i ++;
    printf("i = %d ",i);
}
void fun2(void)
{
    j = 0;
    j++;
    printf("j = %d ",j);
}
int main()
{
    for(k=0; k<10; k++)
    {
        fun1();
        fun2();
        printf("\n");
    }
    return 0;
}

只有本站会员才能查看附件,请 登录
4 回复
#2
吕孟伟2019-07-11 15:39
你可以看一下static 的内容。https://doc.bccnsoft.com/docs/cppreference2018/en/c/language/storage_duration.html
j是全局变量,变量i经static 修饰后是函数fun1的局部变量,只初始化一次。
#3
c小白23332019-07-14 15:19
fun1中 static int i = 0 你可以理解为只运行一次  
然后接下来再次进入 fun1  就只运行 i++了 所以输出 1 2 3 。。。
fun2 中  每次进入  都先给j 赋值为  0
然后 j++   j 的值为1  所以一直输出1
希望有所帮助
#4
Q149782019-07-14 16:34
那个大佬教我学脚本啊
#5
zbjzbj2019-07-14 16:52
#include "stdio.h"
int k;
static int j;
void fun1(void)
{
    static int i ;//= 0;
    i=0;
    i ++;
    printf("i = %d ",i);
}
void fun2(void)
{
    j = 0;
    j++;
    printf("j = %d ",j);
}
int main()
{
    for(k=0; k<10; k++)
    {
        fun1();
        fun2();
        printf("\n");
    }
    return 0;
}
static变量在程序运行过程中,只定义一次,程序结束之前一直有效。函数退出,static变量依然存在。

int k;
static int j;//只允行一次
void fun1(void)
{
    static int i = 0;//只运行一次。因为在定义的时候初始化了,所以i=0也只运行一次。
    i ++;
    printf("i = %d ",i);
}
void fun2(void)
{
    j = 0;
    j++;
    printf("j = %d ",j);
}
int main()
{
    for(k=0; k<10; k++)
    {
        fun1();
        fun2();
        printf("\n");
    }
    return 0;
}
1