C++第3章 构造数据类型 知识点总结
本章围绕自定义复合数据类型展开,分为枚举、数组、指针、引用、结构体与共用体五大模块,是C++重难点。
一、枚举类型 enum
3.1.2 使用
1. 枚举变量只能取枚举列表内常量,限制取值范围,提升代码可读性
2. 枚举本质是整型,可和int互相隐式转换,但不推荐随意强转
二、数组
3.2.1 一维数组
- 定义: 类型 数组名[长度]; ,下标从 0 开始,不能越界访问
- 初始化: int a[5]={1,2}; 剩余元素自动补0;可省略长度 int a[]={1,2,3}; 由初始化值确定大小
3.2.2 二维数组
- 定义: int arr[行][列]; ,行可省略、列不可省略
- 存储:行优先连续存放,多用于矩阵、表格数据
3.2.3 多维数组:三维及以上,日常开发极少使用
3.2.4 数组与函数
数组做实参时退化为首元素地址,函数形参 int a[] 等价 int *a ,无法在函数内获取数组真实长度
3.2.5 字符数组与字符串
1. C风格字符串: char str[]="abc"; 末尾自动隐藏 '\0' 结束符
2. 常用库: <cstring> , strlen 求有效长度、 strcpy 复制、 strcat 拼接
3. C++推荐 string 类,无需手动处理结束符
三、指针(本章核心难点)
3.3.1 指针定义&使用
- 指针存变量内存地址: int a=10; int *p=&a; , *p 解引用访问原变量
- 指针变量本身占固定字节(32位4字节/64位8字节)
3.3.2 指针与字符串
char *p="hello"; 指针指向字符串首地址,不可通过 p 修改字面常量内容
3.3.3 指针与数组
数组名是首元素地址: a==&a[0] ; *(a+i) = a[i] ,指针加减整数实现数组下标遍历
3.3.4 多重指针
int **pp; 二级指针存放一级指针的地址,多用于动态数组、字符串数组
3.3.5 动态内存分配
new/delete : int *p=new int[5]; delete[] p; ,堆区手动申请释放内存,避免数组固定长度限制
3.3.6 指针与函数
- 指针作形参:修改实参原始数据(地址传递)
- 函数指针:存储函数地址,可做回调参数
3.3.7 常量指针&指针常量
1. const int *p :常量指针,不能通过*p改值,指针本身可改指向
2. int *const p :指针常量,指针指向固定不能改,可修改*p的值
四、引用 &(C++独有)
3.4.1 引用定义
int a=5; int &ra=a; ,引用是变量别名,定义时必须初始化,不能绑定空值
3.4.2 引用与函数
引用做形参,等价地址传递,语法比指针简洁,无内存开销,是函数传参首选
3.4.3 常引用 const &
const int &r=a; :不能通过引用修改原变量,适配常量、临时变量传参
五,课后习题
1.输入一个字符串,检查出现的次数
2.工资,工号
3.连接两个字符串
4.判断回文字符
5.打印杨辉三角





更多推荐

所有评论(0)