📜  C |变量声明和范围|问题7(1)

📅  最后修改于: 2023-12-03 14:39:40.041000             🧑  作者: Mango

C | 变量声明和范围 | 问题7

本问题涉及到变量的作用域和生命周期,即变量从定义到销毁的整个过程。在C语言中,变量的作用域和生命周期取决于其声明的位置、存储类型和作用域控制符等因素。

问题描述

下面的代码片段:

#include <stdio.h>

int main()
{
    int i;
    for (i = 0; i < 10; i++)
    {
        int j = i*2;
        printf("j = %d\n", j);
    }
    printf("j = %d\n", j);
    return 0;
}

在编译时会报错 error: ‘j’ undeclared,请解释错误产生的原因,并给出错误的修正方案。

回答方案

错误产生的原因是:变量 j 的作用域只在 for 循环中,出了这个循环,j 就被销毁了,再次使用 j 就会出现未声明的错误。

修正方案:将变量 j 的声明放在循环的外面,即:

#include <stdio.h>

int main()
{
    int i, j;
    for (i = 0; i < 10; i++)
    {
        j = i*2;
        printf("j = %d\n", j);
    }
    printf("j = %d\n", j);
    return 0;
}

这样,变量 j 的作用域就扩大到了整个 main 函数。