这里通过变量作用域的两种错误用法来介绍一下C语言变量作用域

其次对代码块的使用进行了简单说明:

#include <stdio.h>

1.变量的作用域(作用范围)

变量定义的那一行开始,直到变量所在的代码块结束为止。

2.代码块

作用:及时回收不再使用的变量,提高程序性能

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

下面两种做法是错误的,都是在变量作用域之外使用它。

做法一:

int main(){

int score;

score = a + 10;

int a = 100;

return 0;

}

运行结果:变量使用注意.c:7:13: error: use of undeclared identifier 'a'

score = a + 10;

^

1 error generated.

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

做法二:

int test()

{

int score = 100;

return 0;

}

int main()

{

test();

printf("%d",score);

return 0;

}

运行结果:变量使用注意.c:26:17: error: use of undeclared identifier 'score'

printf("%d",score);

^

1 error generated.

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

代码块的使用

int main()

{

float height = 1.65;

height = height + 0.1;

int score = 100;

//...没有再使用height

printf("%d",score);

}

上边main函数中,变量height在执行:height = height + 0.1之后再也没用到height,为了提高程序性能,可以如下使用代码块:

int main()

{

{

float height = 1.65;

height = height + 0.1;

}//代码块执行完后,变量height从程序内存中释放

int score = 100;

//...没有再使用height

printf("%d",score);

}

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

代码块的例子:

int main()

{

int a = 20;

int score = a + 100;

printf("%d\n",score);//120

{

int score = 50;

{

score = 10;

printf("%d\n",score);//10

}

a = 10;

}

{

score = a +250;

int score =30;

printf("%d\n",score);//30

}

printf("%d\n",score);//260

return 0;

}

代码块内部使用它自己没有定义的变量,这个变量就是该代码块向它外层找最近定义的那个代码块中的变量。

黑马程序员-- C语言变量作用域与代码块的更多相关文章

  1. 黑马程序员—C语言的函数、数组、字符串

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...

  2. 黑马程序员——C语言基础 变量类型 结构体

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)变量类型 1)局部变量 1> 定义:在函数内部定义的变量,称为 ...

  3. 黑马程序员——C语言基础语法 关键字 标识符 注释 数据及数据类型

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)C语言简单介绍 (1)C语言程序是由函数组成的任何C语言程序都是由一 ...

  4. 黑马程序员——C语言基础 枚举 宏定义 自定义 static exterm

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)枚举 1)枚举类型的定义 枚举是C语言中的一种基本数据类型,并不是构 ...

  5. 黑马程序员——C语言基础 函数

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)函数的定义 1> 任何一个C语言程序都是由一个或者多个程序段( ...

  6. 黑马程序员——OC语言基础语法 面向对象的思想

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...

  7. 黑马程序员——C语言基础 scanf函数 基本运算 三目运算符

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)scanf函数 1>  简单介绍一下scanf函数   这是在 ...

  8. 黑马程序员——C语言基础 流程控制 选择结构和循环结构

    ---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...

  9. 黑马程序员——C语言基础 指针

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)指针 首先指针是C语言中非常重要的数据类型,如果你说C语言中除了指针 ...

随机推荐

  1. windows下 Python 安装包的配置

    1.下载安装 Pythonpython-2.7.2.msi  http://www.python.org/download/如下载 Python 2.7.2,安装目录为 C:\Python27 2.添 ...

  2. 关闭编译器FPO优化

    // The release libs don't include FPO debug information, so FPO// optimization will interfere with s ...

  3. python学习笔记:python序列

    python序列包括字符串.列表和元组三部分,下面先总的说一下python序列共有的一些操作符和内建函数. 一.python序列 序列类型操作符 标准类型的操作符一般都能适用于所有的序列类型,这里说一 ...

  4. Inno Setup教程

    一.简介 Inno Setup是一款免费的安装制作软件,小巧.简便.精美是其最大特点,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般安装任务.该软件用Delp ...

  5. sqlmap新手注入

    一 什么是sqlmap sqlmap is an open source penetration testing tool that automates the process of detectin ...

  6. java中等于和equals的区别

    面试的时候没答上,很受打击,特写在这里. ==是判断两个变量或实例是不是指向同一个内存空间equals是判断两个变量或实例所指向的内存空间的值是不是相同 除了String和封装器,equals()和“ ...

  7. 有关于/home出现100%被占用 与 vnc的关系

    我在远程服务器时,通常使用的程序是vnc.因为vnc可以图形化界面,操作效果比用putty好很多. 但是,我发现使用vnc有一个问题,就是/home占用空间会达到100%. [zy@islab62 ~ ...

  8. webservice axis2客户端设置代理方法(公司网络通过代理访问时)

    webservice axis2客户端设置代理方法(公司网络通过代理访问时)   UploadProcessInServiceStub stub = new UploadProcessInServic ...

  9. 迎接 Windows Azure 和 DNN 挑战,几分钟内快速构建网站!

    编辑人员注释:本文章由高级商务策划师兼开发平台推广者 Neeti Gupta 撰写. 曾几何时,构建一个简单的网站需要耗费好几个月的时间.在过去,.NET 开发人员和设计社区的一些成员使用 DNN(以 ...

  10. Linux中service命令和/etc/init.d/的关系

    Linux中service命令和/etc/init.d/的关系   service xxx启动 /etc/init.d/ 目录下的xxx脚本 如一个脚本名为 mysvc保存在/etc/init.d/下 ...