目录
????????4.5布尔类型 bool (只占一个字节大小)
8. 一维数组 // 数组名是常量,进行初始化后,不能再对其进行赋值操作
? ? ? ? ? ? ? ? 12.6 结构体中const使用场景
作用:用于记录程序中不可更改的数据。
c++定义常量两种方式
? ? ? ? 1. #define 宏常量: #define 常量名 常量值
? ? ? ? ? ? ? ? 通常在文件上方定义,表示一个常量
? ? ? ? 2 const修饰的变量 const 数据类型 常量名 = 常量值
? ? ? ? ? ? ? ? 通常在变量定义前关键字const, 修饰该变量为常量,不可修改。
作用:关键字是c++中预先保留的单词(标识符)
? ? ? ? **在定义变量或常量时候,不要用关键字**
c++关键字如下:
作用:c++规定给标识符(变量、常量)命名时,有一套自己的规则
*标识符不能是关键字
*标识符只能由字母、数字、下划线组成
*第一个字符必须为字母或下划线
*标识符中区分大小写
c++规定在创建一个变量或常量时,必须要指定出相应的数据类型,否则无法给变量分配内存
short 2字节 -2^15 - 2^15-1
int 4字节 -2^31 - 2^31-1
long 4字节? -2^31 - 2^31-1
long long 8字节 -2^63 - 2^63-1
默认情况下 输出一个小数,会显示出6位有效数字
float 4字节 7位有效数字
double 8字节 15-16位有效数字
作用:字符型变量用于显示单个字符
语法 char ch = 'a';
注意1:在显示字符型变量时,用单引号字符括起来,不要用双引号
注意2:单引号内只能有一个字符,不可以是字符串
c和c++字符型变量只占用1个字节。
字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元
作用:用于表示一串字符
1.c风格字符串 char 变量名[] = “字符串值”
2. c++风格字符串 string 变量名 = “字符串值”? c++字符串要引用头文件 include<string>
作用:布尔类型数据代表真或假的值
bool类型只有两个值:
true --- 真 本质是1。
false --- 假 本质是0。? ? ? ?
作用:利用sizeof关键字可以统计数据类型所占内存大小
语法:sizeof(数据类型/变量)
作用:用于从键盘获取数据
关键字:cin
语法: cin >> 变量
作用:可以无条件跳转语句
语法 goto 标记;
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置。
三种定义方式:
? ? ? ? 数据类型 数组名[数组长度]
? ? ? ? 数据类型 数组名[数组长度] = {值1,值2...}// 这种定义方式,如果在初始化时没有给足够的数,数组会自动将后面的数据默认为0
? ? ? ? 数据类型 数组名[] =? {值1,值2...}
1. 数据类型 数组名[行数][列数];
2. 数据类型 数组名[行数][列数] = { {数据1,数据2},{数据3,数据4}};
3. 数据类型 数组名[行数][列数] = {数据1,数据2,数据3,数据4};
4. 数据类型 数组名[][列数] = {数据1,数据2,数据3,数据4}
作用:将一段经常使用的代码封装起来,减少重复代码。
一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。
? ? ? ? ? ? ? ? 函数的定义一般主要有五个步骤:
? ? ? ? ? ? ? ? ? ? ? ? 1.返回值类型
? ? ? ? ? ? ? ? ? ? ? ? 2.函数名
? ? ? ? ? ? ? ? ? ? ? ? 3.参数列表
? ? ? ? ? ? ? ? ? ? ? ? 4.函数体语句
? ? ? ? ? ? ? ? ? ? ? ? 5.return表达
值传递,形参的值改变并不会影响实参的值?
引用传递,形参的值改变会直接影响实参的值
地址传递,形参的值改变会直接影响实参的值,地址传递在实际调用时,需要传递地址如h(&a,&b)
// 数组 实际进行的是地址传递
在64位系统下指针占用八个字节,在32位操作系统下指针占用四个字节(无论是哪种数据类型)
? ? ??作用:可以通过指针间接访问内存
? ? ? *内存编号是从0开始记录的,一般用十六进制数字表示
? ? ? *可以利用指针变量保存地址
? ? ? ? ? ? ? ? 语法: 数据类型 * 变量名;
? ? ? ? ? ? ? ? 例如:
? ? ? ? ? ? ? ? 使用: 可以通过解引用的方式来找到指针指向的内存地址中的有效数据, 在指针前加*,例如 *p ,*代表解引用。
? ? ? ? ? ? ? ? ? ? ? ? 空指针:指针变量指向内存中编号为0的空间? ?NULL
? ? ? ? ? ? ? ? ? ? ? ? 用途:初始化指针变量
? ? ? ? ? ? ? ? ? ? ? ? 注意:空指针指向的内存是不可以访问的
? ? ? ? ? ? ? ? ? ? ? ? ?注意:0-255之间的内存编号是系统占用的,因此不可以访问
?????????????????????????野指针:指针变量指向非法的内存空间。在程序中,空指针和野指针都不是我们申请的空间,所以我们权限对其进行访问。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? const修饰指针有三种情况:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.const修饰指针 ----- 常量指针? ?例如: const int *p = &a;
???????????????????????????????????????????????? 特点:指针的指向可以修改,但是指针指向的数据值不可以修改?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.const修饰常量 ----- 指针常量? ?例如 int * const p = &a;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 特点:指针的指向不可以修改,但是指针指向的数据值可以修改? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????3. const即修饰指,又修饰常量。 例如:const int * const p = &a;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 特点:指针的指向和指针指向的数据值都不可以修改。
? ? ? ? ? ? ? ? ? ? ? ? 作用:利用指针访问数组中元素
? ? ? ? void bubbleSort(int *arr, int len)
? ? ? ? void bubbleSort(int arr[], int len) // 这两种定义方式都可以。
? ? ? ? ? ? ? ? 基本概念: 结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。
? ? ? ? ? ? ? ? 结构体定义和使用
? ? ? ? ? ? ? ? ? ? ? ? 语法:struct 结构体名 {结构体成员列表};
? ? ? ? ? ? ? ? ? ? ? ? 通过结构体创建变量的方式:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? struct 结构体名 变量名
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? struct 结构体名 变量名 = {成员1值, 成员2值...}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 定义结构体时顺便创建变量
// 在创建变量时,struct关键字可以省略?
? ? ? ? ? ? ? ? ? ? ? ? 作用:将自定义的结构体放入到数组中方便维护
? ? ? ? ? ? ? ? ? ? ? ? 语法:struct 结构体名 数组名[元数个数] = { {}, {},......{} }
????????????????????????
? ? ? ? ? ? ? ? ? ? ? ? 作用:通过指针访问结构体中的成员
? ? ? ? ? ? ? ? ? ? ? ? 利用操作符->可以通过结构体指针来访问结构体属性
? ? ? ? ? ? ? ? ? ? ? ? 作用:结构体中的成员可以是另一个结构体
? ? ? ? ? ? ? ? ? ? ? ? 作用:将结构体作为参数向函数中传递
? ? ? ? ? ? ? ? ? ? ? ? 传递方式有三种:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?值传递? // 实际是赋值,如果数据量特别大,使用值传递会消耗大量空间和时间
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?地址传递
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 引用传递
? ? ? ? ? ? ? ? ? ? ? ? 作用:用const来防止误操作
????????????????????????