C++ 基本语法
——注释
单行注释,多行注释都与java相同
——数据类型
七种基本的数据类型 bool char int float double void wechar_t
一些基本类型可以使用一个过多个类型修饰符进行修饰
各种变量类型在内存中存储值时需要占用的内存 以及该变量所能存储的最大值和最小值
typedef声明 为一个已有的类型取一个新的名字
枚举类型 是C++中的一种派生数据类型,他是由用户定义的若干枚举常量的集合
——变量类型
变量其实只不过是程序可操作的存储区的名称
C++也允许定义各种其他类型的变量,比如枚举、指针、数组、引用、数据结构、类等
C++中的左值和右值
——C++变量作用域
作用域是程序的一个区域,一般来说有三个地方可以定义变量
局部变量-在函数或一个代块内部声明的变量
形式参数-在函数参数定义声明的变量
全局变量-在所有函数外部声明的变量
——C++常量
常量是固定值,在程序执行期间是不会改变的,这些固定的值又叫做字面量
常量可以是任何的基本数据类型,可分为整型数字,浮点数字,字符,字符串和布尔值
常量就像是常规的变量,只不过常量的值在定义后不能修改
定义常量有两种简单的方式
1-使用#define预处理器
2-使用const关键字
宏定义#define和常量const的区别
——C++修饰符类型
C++允许在char、int和double数据类型前防止修饰符
修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求
singed
unsinged
long
short
C++中的类型限定符
类型限定符提供了变量的额外信息
const—const类型的对象在程序执行期间不能被修改改变
volatitle—该修饰高数编译器,变量的值可能以程序未明确指定的方式改变
restrict—由该修饰符修饰的指针是唯一一种访问它所指向的对象的方式
C++存储类
存储类定义C++程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前
auto
register
static—static存储类指示编译器在程序的生命走起内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁,因此使用static修饰局部变量可以在函数调用之间保持局部变量的值
extern—存储类用于提供一个全局变量的引用,全局变量对所有的程序文件是可见的,当使用extern时,对于无法初始化的变量,会把变量名只想一个之前定义过的存储位置
mutable—mutable说明符仅适用于类的对象
thread_local(C++11)
C++运算符
运算符是一种概述编译器执行特定的数学或逻辑操作的符号
C++内置了丰富的运算符
算数运算符—加减乘除
关系运算符—大小
逻辑运算符—与或非
位运算符
赋值运算符
杂项运算(比C#多出一项)
运算符的优先级
C++循环
循环类型:
while循环—当给定条件为真时,重复语句或语句组。他会在执行循环主体之前测试条件
for循环—
do…while循环—
嵌套循环—
循环控制语句:
break语句
continue语句
goto语句
C++ 判断
判断结构要求指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句和条件为假时要执行的语句
if—
if…else —
嵌套if语句—
switch —
嵌套switch语句—
C++ 函数
函数是一组一起执行一个任务的语句
每个C++程序都至少有一个函数,即主函数main(),所有简单的程序都可以定义其他额外的函数
函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体
C++标准库提供了大量的程序可以调用的内置函数
函数声明—函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义
调用函数—
函数参数—
如果函数要使用参数,则必须声明接受参数数值的变量,这些变量称为函数的形式参数
形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁
当调用函数时,有两种向函数传递参数的方式:
传值调用-修改形式参数对实际参数没有影响
指针调用-修改形式参数对实际参数有影响
引用调用-修改形式参数对实际参数有影响
参数的默认值—
在参数列表中后边的每一个参数指定默认值,当调用函数时,如果实际参数的值留空,则使用这个默认值,如果指定了值,则会忽略默认值,使用传递的值
Lamabda函数与表达式—
C++数组
存储一个固定大小的相同类型元素的顺序集合
数组中的特定元素可以通过索引访问
所有的数组都是由连续的内存位置组成
最低的地址对应第一个元素,最高的地址对应最后一个元素
在C++中声明一个数组需要指定元素的类型和元素的数量
C++数组详解-
多维数组-多维数组最简单的形式是二维数组
指向数组的指针-指定不带索引的数组名称来生成一个指向数组中第一个元素的指针
传递数组给函数-指定不带索引数组名称来给函数传递一个指向数组的指针
从函数返回素组-从函数返回数组
C++字符串
提供了以前两种类型的字符串表现形式
C风格字符串
C++引入的string类类型
C++指针
指针是一个变量,其值为另一个变量的地址
即内存位置的直接地址
在使用指针存储其他变量地址之前,对其进行声明
声明其数据类型和指针变量的名称
*星号是用来指定一个变量是指针
C++使用指针
使用指针会频繁的进行以下几个步骤:
1 定义一个指针变量
2 把变量地址赋值给指针
3 访问指针变量中可用的地址的值
这些是通过使用一元运算符* 来返回位于操作数所指定地址的变量的值
C++指针详解
C++NUll指针-NUll指针是一个定义在标准库中的值为零的常量
C++指针的算数运算-可以对指针进行四种算术运算
C++指针vs数组
C++指针数组-可以定义用来存储指针的数组
C++指向指针的指针-允许指向指针的指针
C++传递指针给函数-通过引用或地址传递参数,使传递的参数在调用函数中被改变
C++从函数返回指针-函数返回指针到局部变量、静态变量和动态内存分配
C++引用
引用变量是一个别名,它是某个已存在的变量的另一个名字
一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量
引用和指针的三个不同点:
1-不存在空引用,引用必须连接到一块合法的内存
2-一旦引用被初始化一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象
3-引用必须在创建时被初始化。指针可以在任何时间被初始化
把引用作为参数——C++支持把引用作为参数传给函数,这比传一半的参数更安全
把引用作为返回值——可以从C++函数中返回引用,就像返回其他数据类型一样
C++基本的输入输出
字节流是从设备流向内存,这叫输入操作
字节流是从内存流向设备,这叫输出操作
标准输出流(cout)
预定义对象cout是ostream类的一个实例
标准输入流(cin)
预定义对象cin是istream类的一个实例
标注错误流(cerr)
标准日志流(clog)
C++数据结构
结构体-struct语句
访问结构成员使用成员访问符(.)