从C到C++学习笔记2: C++基础内容备忘

C++ 关键字

asm else new this
auto enum operator throw
bool explicit private true
break export protected try
case extern public typedef
catch false register typeid
char float reinterpret_cast typename
class for return union
const friend short unsigned
const_cast goto signed using
continue if sizeof virtual
default inline static void
delete int static_cast volatile
do long struct wchar_t
double mutable switch while
dynamic_cast namespace template

C++ 数据类型长度

局部变量和全局变量初值

当局部变量被定义时,系统不会对其初始化
定义全局变量时,系统会自动初始化为下列值

数据类型 初始化默认值
int 0
char ‘\0’
float 0
double 0
pointer NULL

C++ 类型限定符

限定符 含义
const const 类型的对象在程序执行期间不能被修改改变。
volatile 变量的值可能以程序未明确指定的方式被改变。
restrict 由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式

C++存储类

存储类 描述
auto 所有局部变量默认的存储类,且 auto 只能修饰局部变量
register 存储在寄存器中而不是 RAM 中的局部变量,最大尺寸等于寄存器的大小,不能用 ‘&’ 取内存地址,具体存储位置受硬件限制,可以是计数器等
static 修饰局部变量可以在函数调用之间保持局部变量的值,不需要在每次它进入和离开作用域时进行创建和销毁。修饰全局变量会使变量的作用域限制在声明它的文件内。
extern 通常用于两个或多个文件共享相同的全局变量或函数
mutable 仅适用于类的对象,允许对象的成员替代常量。mutable 成员可以通过 const 成员函数修改。

C++运算优先级

类别 运算符 结合性
后缀 () [] -> . ++ – – 从左到右
一元 + – ! ~ ++ – – (type)* & sizeof 从右到左
乘除 * / % 从左到右
加减 + – 从左到右
移位 << >> 从左到右
关系 < <= > >= 从左到右
相等 == != 从左到右
位与 AND & 从左到右
位异或 XOR ^ 从左到右
位或 OR | 从左到右
逻辑与 AND && 从左到右
逻辑或 OR | | 从左到右
条件 ?: 从右到左
赋值 = += -= *= /= %=>>= <<= &= ^= = |从右到左
逗号 , 从左到右

C++ 生成随机数

C++ 引用和指针区别

  • 不存在空引用。引用必须连接到一块合法的内存。
  • 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
  • 引用必须在创建时被初始化。指针可以在任何时间被初始化。

C++ 指针和数组区别

把指针运算符 * 应用到 数据名 var 上是完全可以接受的,但修改 var 的值是非法的。这是因为 数据名 var 是一个指向数组开头的常量,不能作为左值。

一个数组名对应一个指针常量,只要不改变数组的值,仍然可以用指针形式的表达式

C++ 引用声明

参考

  1. W3Cschool C++教程
  2. 菜鸟教程 C++教程

版权声明

  1. 本文由 Howie Lee 发表,采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。请确保你已了解许可协议,并在 转载 时声明。
  2. 转载请注明来源,本文固定链接:http://www.lifower.com/?p=148

——文章采用PyPoster离线发布,欢迎到GitHub支持原作者!