记录C++学习时的一些比较乱的知识点
- 表达式内同时含有int和unsigned int,且int为负数,计算时int会被转化为无符号数,容易引起错误。
- C++程序中如果直接定义
unsigned a;//为默认缺省规则,默认a为无符号整形,即unsigned int型。
- 字符串字面值的实际长度比内容多1.
- 单引号内为字符,双引号为字符串。
- 转义字符
换行符 | \n |
横向制表 | \t |
纵向制表 | \v |
报警符 | \a |
退格 | \b |
双引号 | \“ |
单引号 | \‘ |
反斜线 | \\ |
问号 | \? |
回车符 | \r |
进纸符 | \f |
- 初始化和赋值是两种完全不同的操作!!!!!初始化的含义是创建变量时赋予其一个初始值,赋值的含义是把对象的当前值擦除,而以一个新的值来替代。
- 赋值的方式有四种
int A=0;
int A={0};
int A{0};
int A(0);
- 定义变量的时候不能使用连续的等号赋值。
- 声明一个变量而非定义它,在它前面加上extern字符.试图初始化声明也会引起错误。
extern int A;//声明A,A没有初始值,如果加上初始值声明就变成定义了
- 用户自定义变量标识符不能有两个连续的下划线,也不能以下划线紧连大写字母。定义在函数体外的标识符不能以下划线开头。
- 引用通俗理解就是给变量起另外一个名字,所以定义引用必须初始化,不能为空,也不能重定义。赋值实际上是将初始值拷贝到新建对象中,引用是于对象绑定。引用本身不是对象,不能定义引用的引用;引用需要严格与绑定的对象匹配,不能与字面值或者表达式的计算结果绑定在一起。
- 指针本身就是对象;指针在其存在周期内可以修改,即可以指向不同的对象;指针可以为空,在定义时可以不初始化。注意,由于引用没有对象,所以不能定义指向引用的指针。这里引入一个特殊的指针*void,同样存放的是地址,但是只能用于拿它与其他指针比较或者作为函数的输入输出,不能直接操作它所指对象,因为不知道对象是何种类型的。简单来说就是,从*void的角度来说,内存空间就仅仅是内存空间,无法访问指针所指对象。