C++学习笔记_20200828
From:学堂在线 慕课课程《C++语言程序设计》 郑莉 清华大学
文章目录
第二章 C++简单程序设计
2.2.1 C++的特点和程序实例
#include <iostream>
using namespace std;
int main() {
cout<<"Hello"<<endl;
cout<<"Welcome to c++!"<<endl;
return 0;
}
- 主函数块 int main() {语句+返回(return int;)},()用于放函数的参数,不可省
- cout 为预定义好的输出流中的对象,负责向显示器送数据
- <<为运算符,为流插入运算,将后面的插入到输出流中
- 数据的输出就是信息的流动,输出流就是程序空间到外部设备的信息流动的通道(向显示器输出信息的这个流通到是默认打开好的,负责向这个流中送数据的就是cout)
- endl为预定义好的符号,表示行结束。
- 在主函数的最后都要写一个return 0,其作用是返回这个函数的计算结果。运行环境或操作系统是主函数的调用者,主函数一般没有什么数据需要返回,但有数据需要返回时可以return一个有意义的数据,没什么需要返回的默认返回0.
- main 前有个int,表示规定这个函数返回结果为一个整数类型(int)
- #< iostream >包含了iostream这个头文件,其中的内容是符合C++语法的纯文本,给出了想使用的预定义好的输入输出功能的相应的声明和说明。需要声明cout这个对象,通过把iostream include进来并且在cout面前加上std::即可。
- std属于一个命名空间以避免和自己代码中的或其他库中的函数名、变量名等重名,::表示作用域分辨符。
- using namespace std是怕在每个cout前加std::太啰嗦,故指定打开这个命名空间(不推荐这样偷懒,尤其在写大型project时)
- include是一个编译预处理命令,在编译器开始做语法检查和编译之前首先按照include命令到约定的目录下找到iostream(或其他)这个文件,把这个文件的全部内容复制粘贴到include所在的这个位置。
- //开头的都是注释行,编译器会忽略其后这行的内容
2.2.2 C++字符集和词法记号
C++ 字符集:
C++构词法
- 凡是可以出现一个空格的地方,就可以出现任意多个空格,还可以tap,回车,都等同于一个空格
- 只有标识符程序员可以自己起名字
标识符的构成规则
- 以大写字母、小写字母或下划线_开始
- 可以由以大写字母、小写字母、下划线_或数字0~9组成
- 大写字母和小写字母代表不同的标识符
- 不能是C++关键字或操作符
2.3.1 基本数据类型、常量、变量
C++能够处理的基本数据类型
- 整数类型
- 实数类型(浮点数类型)
- 字符类型
- 布尔类型
程序中的数据
- 常量
- 在源程序中直接写明的数据
- 其值在整个程序运行期间不可改变
- 变量
- 在程序运行过程中允许改变的数据
整数类型
- 基本整数类型:int,字节数与机器字长相关
- 按符号分
- 符号的(signed)
- 无符号的(unsigned)
- 按照数据范围分
- 短整数(short)
- 长整数(long)
- 长长整数(long long)
字符类型 (char)
- 容纳单个字符的编码
- 实质上存储的也是整数
- 大多数系统按ASCII 码来编码的,每一个单个字符占一个字节。ASCII是一个七位二进制码,一个字节是八位
实数类型(浮点数类型)
- 实数在计算机中都是用浮点方式表示的
- 单精度(float)
- 双精度(double)
- 扩张精度(long double)
- C++标准也未规定占多少字节,只是 float字节数不超过double,long double字节数不少于double
字符串类型
- 字符串常量:双引号中的一串字符
- 基本类型中无字符串变量
- 采用字符数组来存储字符串(C风格的字符串,C++不鼓励)
- 标准C++类库中的String类(C++风格的字符串),提供相应字符串操作功能
布尔类型(bool)
- 只有两个值:真(true),假(false)
- 常用来表示关系比较、相等比较或逻辑运算的结果(真用1存储,假用0存储)
例子
常量
- 在程序运行的整个过程中其值始终不可改变的量
- 直接使用符号(文字)表示的值
整数常量
- 十进制
- 八进制
- 十六进制
- 表示负数:在常量前加个符号 ‘-’
浮点数常量
字符常量
- 单引号括起来的字符
- 在内存中的存储形式为ASCII码
- 有些字符在屏幕上无法显示,用转义字符(Escape Character,ESC)表示,见图
字符串常量
- C风格字符串常量
- 双引号括起来的字符序列
- 在内存中按串中字符的ASCII码依次连续存放,每个字符占一个字节,在常量末尾添加 ‘\0’ 作为结尾标记
- 哪怕字符串只有单个字符,末尾也有一个0作为结束标记,从而“a”和 ‘a’ 是不一样的
- String类常对象(此处暂略)
- 通过给字符串常量加前缀可以改变字符常量或者字符串常量的类型,见下表:
变量
- 在程序运行过程中其值可变的量
- 实质上是一个名字结合到一组内存单元
- 可以用地址来使用内存空间
- 也可以用定义变量的方式使用内存空间
变量定义
- 数据类型
变量名1,变量名2,…,变量名n - 定义同时可初始化变量
变量初始化
- 若未初始化,变量初始值的状态根据变量所在的位置不同,初始状态不同
- 在所有函数之外定义的变量叫全局变量,若不初始化,会自动有一个基础的初始值 (新手建议尽量避免使用全局变量,在C和C++中可以使用指针等方法避免)
- 在函数体内部定义的变量叫局部变量,若不初始化,值不确定,可能是垃圾数据
- 变量初始化方式:
- 用 =,表示用 = 右边的值去初始化=左边的变量: int a =0
- 在定义变量之后接一个圆括号,其中给出变量的初始值: int a(0)
- 用大括号(初始化列表的方式):
- 初始化列表不允许数据丢失:
- 例如用double值初始化int变量会造成数据丢失,至少小数部分会丢失
- int a = {0}
- int a{0}
- 初始化列表不允许数据丢失:
符号常量
- 常量定义语句的形式为:
- const 数据类型说明符 常量名 = 常量值
- 或数据类型说明符 const 常量名 = 常量值
- 例如:定义一个代表圆周率的符号常量
- const float PI = 3.1415926
- 符号常量在定义时一定要初始化,在程序中间不能改变其值