第二章 头文件、变量和基本类型(7)——名字的作用域
来源:互联网 发布:淘宝店铺新品上架 编辑:程序博客网 时间:2024/05/29 11:06
0x01 什么是作用域?
作用域是程序的一部分,在其中名字有其特定的含义。同一个名字在不同的作用域中可能指向不同的实体。名字的有效区域始于名字的声明语句,以声明语句所在的作用域末端为结束。
#include <iostream>using namespace std;int main(int argc, const char * argv[]){ int sum = 0; for (int val = 1; val <= 10; ++val) sum += val; cout << "Sum of 1 to 10 inclusive is " << sum << endl; return 0;}
1、上面这段程序定义了3个名字,main、sum和val,同时使用了命名空间名字std;
2、名字main定义在所有花括号之外,所以它有全局作用域,一旦声明之后,全局作用域内的名字在整个程序范围内均可使用;
3、名字sum定义在main函数所限定的作用域内,它拥有块作用域,从声明sum开始到main函数结束为止都可访问它,main函数外则不行;
4、名字val定义于for语句内,在for语句内可以访问它,但在main函数的其他部分不行。
0x02 作用域的嵌套
1、作用域可以彼此包含,被包含(被嵌套)的作用域称为内层作用域,相对应的就有外层作用域;
2、作用域中一旦声明了某个名字,它所嵌套着的所有作用域中都能访问该名字;
3、允许在内层作用域中重新定义外层作用域已有的名字,但最好不要这么做。
#include <iostream>using namespace std;int outside = 1; //outside拥有是全局作用域int main(int argc, const char * argv[]){ int inside = 2; //inside拥有块作用域 cout << outside << " " << inside << endl; //输出1 2 int outside = 0; //在内层作用域中重新声明并定义outside cout << outside << " " << inside << endl; //输出0 2 cout << ::outside << " " << inside << endl; //使用::作用域运算符显式要求访问全局变量outside,输出1 2 return 0;}
-----------(我是分割线)-----------
这里的学习顺序基于《 C++ Primer(第五版)》,虽说这本书是C++神书,但如果没有一定的C语言基础,肯定很难一下子啃下来,特别是原书第一章说编写一个简单的程序,结果各种语句和输入输出流都出现了,最后还来个类简介,实在是有点让新手朦逼。就算有一定的C++基础,中文版的语言也略显拗口。
所以,我建议可以先用谭浩强的C/C++系列高校用书籍来打个基础。先别管网上对谭教授的教材评价如何,至少它能高效地带你入门。直接学习C++不是不可以,但毕竟c语言是一门经典的计算机语言,经久不衰,还衍生出了很多其他的计算机语言。学好C语言能培养出一种理解计算机语言的思维模式,以后学其他语言都可能事半功倍。
我个人的学习方式是“先看懂,后深入,再高效”。在这里会按照我的理解,尽量用简单的语言来解释C++的知识点,至少先看懂并让程序能用再说。如果有错欢迎指正。
文中可能有某些程序段来自pezy大神,自学C++的路上我有很多疑难都是在pezy大神的解释中顿悟。在此表示感谢!
任何地方如有侵权请立即联系删除。
-----------(我是分割线)-----------
- 第二章 头文件、变量和基本类型(7)——名字的作用域
- 第一部分 基本语言 第二章 变量和基本类型(2.3.6名字的作用域)(2.3.7在变量的使用处定义变量)
- 第二章 头文件、变量和基本类型(1)——头文件
- 第二章 头文件、变量和基本类型(5)——变量
- 第二章变量和基本类型(自定义头文件)
- 第二章 头文件、变量和基本类型(3)——字面值常量
- 第二章 头文件、变量和基本类型(4)——转义序列
- 第二章 头文件、变量和基本类型(6)——标识符
- 第二章 头文件、变量和基本类型(2)——算术类型及类型转换
- 第二章 头文件、变量和基本类型(8)——复合类型(引用与指针)
- 第二章 变量和基本类型(续3)类类型 & 编写自己头文件
- 第一部分 基本语言 第二章 变量和基本类型(2.9编写自己的头文件)(预处理器)
- 第二章 变量和基本类型——2.3 变量
- 第一部分 基本语言 第二章 变量和基本类型(2.6typedef名字)(2.7枚举)
- C++primer——第二章 变量和基本类型
- 第二章 变量和基本类型——2.1 基本内置类型
- 第二章 变量和基本类型——2.1 基本内置类型((转)附录之原码、反码和补码及其背后的数学之美)
- 第二章 变量和基本类型——2.1 基本内置类型((转)附录之C++中整型的超范围赋值问题)
- java自定义注解
- 二叉树问题---判断二叉树是否为平衡二叉树
- day19之找出最喜欢吃的前k种水果(数组中次数出现最多的前k个数)
- 二叉树问题---判断数组是否为某搜索二叉树的后序遍历的结果
- 二叉树问题---根据后序数组重建搜索二叉树
- 第二章 头文件、变量和基本类型(7)——名字的作用域
- 二叉树问题---判断一棵树是否为搜索二叉树
- 二叉树问题---判断一棵树是否为完全二叉树
- 二叉树问题---通过有序数组生成平衡搜索二叉树
- C语言操作MySQL数据库
- properties文件的读取
- 2018拼多多内推笔试记录
- 对实体类按属性大小排序
- <a>标签的href属性中的"#“与”javascript:;"的区别