for()循环里面定义变量

本文详细解释了C语言中不同作用域的定义及其使用规则,包括全局段、函数段及块作用域,并通过实例展示了变量在各作用域内的生命周期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from: http://zhidao.baidu.com/question/558964534.html

不同的作用域内可以使用相同的变量名,优先使用小范围的作用域。
作用域:
全局段、函数段、块

1.全局段定义变量a, main函数中再定义a, 那么main中函数中定义的a, 看下面例子
2.块,由花括号{} 包含的区域。比如if分支体, for,while循环体中定义的变量,其作用域是花括号内。

例:
#include <stdio.h>

int a = 100;

int main(void)
{        
    printf("a = %d\n", a);         // main函数还没有定义a, 这里使用全局变量a, 100

    int a = 50; 

    printf("a = %d\n", a);         // 使用main函数定义的局部变量a, 50

    if (1) {
         int a = 75;

        printf("a = %d\n", a);         // 使用本块中定义的a, 75
    }                    // 离开块, 块中定义的a就不存在了。

    printf("a = %d\n", a);         // 还在main函数中, 依然使用main局部变量a, 50

    return 0;
}

from:http://zhidao.baidu.com/question/249769387.html

对于{}符号理解不够透彻的原因,也就是程序为什么要缩进的缘由
比如
int main(){
          int a,b;//在同个缩进等级内或大于的缩进等级内是能够访问的
      a=10;
      while(a>0){
                  int c,d;//在这个缩进内是能够进行访问控制的
          a=a-1;
          }//在这里会销毁 变量c和d
          c = 1;//这里会报错,出了局部变量的作用域
      return 0;
}//在这里会销毁main内定义的所有变量

for中定义的变量,编译器编译后,是存放在栈空间上的一个临时内存地址,与变量名无关,一旦完成循环,栈地址会被复用,所以你那种写法,编译器在编译的时候,无法理解这个变量生存周期,所以提示没有定义


if while do while 也是一样 只要用到{},就是在 块作用域 内。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值