第4章C/C++语言基础 4.3~4.6
来源:互联网 发布:淘宝烟丝 编辑:程序博客网 时间:2024/06/01 08:54
1、左值可以出现在赋值语句的左边或者右边,即左值可以当右值使用;右值只能出现在赋值的右边,不能出现在赋值语句的左边。
左值表示程序中必须有一个特定的名字引用到这个值;右值表示程序中没有一个特定的名字引用到这个值。
(左值是一个存储地址,也就是一块内存存储数据所要操作的地址。而右值是一个具体的数据或者数值。)
变量是左值,可以出现在赋值语句的左边;数字是右值,不能被赋值;
2、C++支持复制初始化和直接初始化。
int a(100);// 直接初始化
int b=200;// 复制初始化
3、声明用于向程序表明变量的类型和名称。定义也是一种声明,当定义变量时也声明了它的类型和名称。也可以通过extern关键字声明变量名但不是定义它。
extern int a;//声明但是未定义a
extern声明不是定义,也不会分配存储空间,只是说明变量定义在程序的其他地方。含有初始化的extern声明被当做是定义,程序中变量可以声明多次,但只能定义一次。
声明主要目的是表明变量的类型和名称,而定义的主要目的是为变量分配存储空间。
4、 C++中,每个变量名都与唯一的实体相关联。用来区分变量名的不同意义的区域称为作用域。大多数作用域是用花括号来划定界限的。C++标识符作用域分为全局作用域和局部作用域。
不同作用域的变量可以使用相同的变量名,全局变量可以在程序中的任何地方访问。
作用域是程序的一段区域,作用域用于区别变量名的不同有效范围,分为全局作用域、局部作用域和语句作用域。一个变量名可以和不同作用域中的不同实体相关联。
5、C++中,作用域可以是嵌套的。
6、 C++中,变量的存储类型有自动类型、寄存器类型、静态类型、外部类型等4种。
(1) 自动类型变量(auto)
自动类型只能是局部类型的变量,属于动态存储类型。
(2) 静态类型变量(static)
Static,即在程序运行的过程中静态变量始终是占用一个存储空间。静态变量只能在它的作用范围内使用,使用局部静态变量是为了在下次调用该函数时,能使用上次调用后得到的该变量的值。
(3) 寄存器类型变量(register)
属于动态存储类型,编译器不为寄存器类型的变量分配内存空间,而是直接使用CPU的寄存器,以便提高对这类变量的存取速度。
(4)外部类型变量(extern)
外部类型变量必须是全局变量,C++中,两种情况使用外部的类型变量。一种是在同一源程序文件中,当在全局的定义之前使用该变量时,在使用前要对该变量进行外部类型变量声明。另一种是当程序有多个文件组成时,若在一个源文件中要引用在另一个源文件中定义的局部变量,则在引用前必须对所引用的变量进行外部声明。
若在某文件中定义的全局变量不想被其他文件所调用,则必须将该变量声明为静态全局变量,即静态全局变量只能供所在文件使用。
7、引用与const引用
引用是对象的另一个名字,引用主要主要作用是作为函数的形参。引用是一种符合类型,通过在变量名前添加“&”符号来定义。C++不能定义引用类型的引用,但是可以定义任何其他类型的引用。
Const引用是指向const对象的引用,const引用必须被定义为const类型。
Const引用可以读取但是不可以修改引用对象,任何对const引用进行赋值都是不合法的,它适用于指向const对象的引用;而非const的引用不适用于指向const对象的引用,可以修改引用和被引用对象的值。
8、C vs C++
C语言是结构化的编程语言,是面向过程的,C语言编程考虑的是实现过程;
C++是面向对象的,C++编程考虑的是整个程序模型。
9、匈牙利命名:变量名=属性+类型+对象描述。
变量名可以由字母、数字、下划线组成,必须以字母或者下划线开头,并且区别大小写。
- 第4章C/C++语言基础 4.3~4.6
- 【C语言基础】C语言第11章
- 第4章C/C++语言基础 4.1~4.2
- c语言基础 (4)
- C语言基础4
- C语言基础4
- C语言基础学习——第4天(数组)
- c语言基础学习记录第一天
- 第一天C语言学习基础
- C语言基础第一篇--Hello world !
- C语言基础学习第001天
- 【C语言基础】C语言第二章
- 【C语言基础】C语言第三章
- 【C语言基础】C语言第四章
- 【C语言基础】C语言第五章
- 【C语言基础】C语言第六章
- 【C语言基础】C语言第七章
- 【C语言基础】C语言第八章
- 【JavaScript】基础整理—正则表达式
- 每天一个 Linux 命令(32):gzip命令
- 数组排序sort()
- AndroidStudio本地化配置gradle的buildToolsVersion和gradleBuildTools
- 轮播图--文字上下方向自动滑动
- 第4章C/C++语言基础 4.3~4.6
- swift3 保存json到桌面,从沙盒中读取json
- 4836: [Lydsy2017年4月月赛]二元运算
- 离散题目8
- Spring的自动装配
- Java多线程之内存可见性
- 10、Linux根文件系统的制作
- HDU 1241 Oil Deposits
- 算法导论 练习题 15.3-1