zoukankan      html  css  js  c++  java
  • 程序块结构

    在《C程序语言设计》中文版原文为:

    C语言并不是Pascal等语言意义上的程序块结构的语言,它不允许在函数中定义函数。但是,在函数中可以以程序块结构的形式定义变量。变量的声明(包括初始化)除了可以紧跟在函数开始的花括号之后,还可以紧跟在任何其他标识复合语句开始的左花括号之后。以这种方式声明的变量可以隐藏程序块外与之同名的变量,它们之间没有任何关系,并在与左花括号匹配的右花括号出现之前一直存在

    if(n>0)
    {
        int i;

        for(i=0;i<n;i++)
            ...
    }

    变量i的作用域是if语句的“真”分支,这个i与该程序块外声明的i无关。每次进入程序块时,在程序块内声明以及初始化的自动变量都将被初始化。静态变量只在第一次进入程序块时初始化一次。

    自动变量(包括形式参数)也可以隐藏同名的外部变量与函数。在下面的声明中:

    int x;
    int y;

    f(double x)
    {
        double y;
        ...
    }

    函数f内的变量x引用的是函数的参数,类型为double;在函数f外,x是int类型的外部变量。这段代码中的变量y也是如此。

    在一个好的程序设计风格中,应该避免出现变量名隐藏外部作用域中相同名字的情况,否则,很可能引起混乱和错误。

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    有点绕,我给大家整理一下几个关键:

    1、什么是程序块?    一个函数就是一个程序块;

    2、什么是程序块变量?  程序块之内定义的变量,定义变量 紧贴  左花括号,可以是函数花括号,也可以是标识复合语句的花括号

    3、程序块变量分类?   自动变量静态变量;每次进入程序块,自动变量都被初始化,静态变量只有第一次进入程序块被初始化

    4、程序块变量生命周期? 左花括号 匹配 右花括号 之前

    5、程序块变量坏处?   程序块变量可以隐藏程序块之外与之同名的外部变量和函数

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    总的来说就是,不要让机器产生矛盾。

    2017-12-10 12:18:16

    本文为博主原创,如需转载请注明出处:http://www.cnblogs.com/Fsiswo/p/8016595.html 

    本文由作者原创,如需转载注明出处!
  • 相关阅读:
    MCU软件最佳实践——独立按键
    MCU软件最佳实践——矩阵键盘驱动
    MCU软件最佳实践——使用printf打印数据
    CAP定理图解证明
    类型和变量
    数字ID过长 精度丢失 (已解决:后端方案)
    Springboot 异步线程池配置(小型应用)
    Java 数字 字符串 简单操作
    Java 网络请求
    Java 时间 日 周 月 季 年
  • 原文地址:https://www.cnblogs.com/Fsiswo/p/8016595.html
Copyright © 2011-2022 走看看