黑马程序员-- C语言变量作用域与代码块
这里通过变量作用域的两种错误用法来介绍一下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语言变量作用域与代码块的更多相关文章
- 黑马程序员—C语言的函数、数组、字符串
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...
- 黑马程序员——C语言基础 变量类型 结构体
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)变量类型 1)局部变量 1> 定义:在函数内部定义的变量,称为 ...
- 黑马程序员——C语言基础语法 关键字 标识符 注释 数据及数据类型
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)C语言简单介绍 (1)C语言程序是由函数组成的任何C语言程序都是由一 ...
- 黑马程序员——C语言基础 枚举 宏定义 自定义 static exterm
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)枚举 1)枚举类型的定义 枚举是C语言中的一种基本数据类型,并不是构 ...
- 黑马程序员——C语言基础 函数
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)函数的定义 1> 任何一个C语言程序都是由一个或者多个程序段( ...
- 黑马程序员——OC语言基础语法 面向对象的思想
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...
- 黑马程序员——C语言基础 scanf函数 基本运算 三目运算符
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)scanf函数 1> 简单介绍一下scanf函数 这是在 ...
- 黑马程序员——C语言基础 流程控制 选择结构和循环结构
---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...
- 黑马程序员——C语言基础 指针
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)指针 首先指针是C语言中非常重要的数据类型,如果你说C语言中除了指针 ...
随机推荐
- C# VS 面向对象基础(一)
面向对象(Object Oriented,OO)的相关知识学习了很多了,这篇博客我从C#实现面向对象的理论来做个初步的总结. 在这篇博客中,我通过一个例子讲述了,面向对象中,类,类的实例化,构造方法, ...
- adb server didn t ack failed to start daemon
关掉Ecilpse,打开cmd命令行 1)cd到sdk的platform-tools目录下, 2)执行 adb kill-server ,出现 server not runing 提示 3)执行 ...
- hdu 4710 Balls Rearrangement
题意就不说了,刚开始做我竟然傻傻地去模拟,智商捉急啊~~超时是肯定的 求出 a ,b 的最小公倍数,因为n够长的话,就会出现循环,所以就不要再做不必要的计算了.如果最小公倍数大于n的话,就直接计算n吧 ...
- N!
#include<stdio.h>main(){int jiech(int n);int n;printf("n:\n");scanf("%d",& ...
- LinkList的实现
public class MyLinkedList<AnyType> implements Iterable<AnyType> { @Override public Itera ...
- jacob 操作word转pdf
项目需要对上传的word及pdf进行在线预览,因基于jquery的pdf插件,很方面实现在线预览,而word实现在线预览费劲不少,于是想到在进行上传处理时,直接将word转成pdf,在预览时直接预览p ...
- 将warning设为错误
在程序编写过程中,我们有时会因为现实情况将现在无法实现的部分功能设为warning #prama warning ------------------ 为了方便查找warning,或查看某部分的警告, ...
- Delphi XE6调用javascript
原文地址:Example of using JavaScript for Google maps in the Delphi XE6 XE6的TWebBrowser新增了EvaluateJavaS ...
- Delphi中的消息截获(六种方法:Hook,SubClass,Override WndProc,Message Handler,RTTI,Form1.WindowProc:=@myfun)good
Windows是一个基于消息驱动的系统,因此,在很多时候,我们需要截获一些消息然后自己进行处理.而VCL系统又有一些特定的消息.下面对我所了解的delphi环境中截获消息进行一些总结. 就个 ...
- 打开网页自动弹出QQ临时会话 (打开网站弹出QQ聊天) qq.js文件代
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35 ...