天天看点

static变量只初始化一次

输出下列代码的值

#include<iostream>
#include<stdio.h>

int x = ;
void incre()
{
    static int x = ;

    x *= x + ;
    printf("%d\n",x);
}

void fun()
{
    printf("%d\n",x);
}

int main()
{
    for(int i = ; i < ; i++)
    {
        incre();
    }
    fun();
    return ;
}
           

答案是2 6 42 4

解释:

1. 静态局部变量只在该函数内使用,不能在函数外使用,如果局部变量和全局变量名称相同,则全局变量在该函数体内被屏蔽

2. static变量只初始化一次

3. static修饰的全局变量,只能在该文件中使用