C++初学者必看学习笔记
需积分: 0 87 浏览量
更新于2024-06-05
收藏 19KB DOCX 举报
### C++初学者必看学习笔记
#### 一、一维数组
一维数组是一种基本的数据结构,在C++中广泛用于存储同类型的多个元素。它具有以下特点:
1. **数组元素的数据类型相同**:例如,一个整型数组的所有元素都是整型。
2. **连续的内存空间**:数组中的元素在内存中是连续存储的。
##### 数组的格式
数组可以通过多种方式定义:
- 定义数组的基本格式为:`<类型标识符> <数组名字>[<数组长度>]`;
- 如果同时想要初始化数组,则可以在定义时直接给出初始值:`<类型标识符> <数组名字>[<数组长度>] = {值 1,……,值 n}`;
- 当不知道具体数组长度时,可以采用这种方式定义数组:`<类型标识符> <数组名字>[] = {值 1,……,值 n}`;
- 访问数组元素的方式为:`<数组名字>[下标]`;其中下标是从0开始的。
##### 数组的初始化
数组的初始化有几种不同的方法:
- 显式初始化:如 `int a[5]={1,2,3,4,5}`;
- 部分初始化:如 `int a[10]={1,2,3,4,5}`,这种情况下未指定的元素会被自动初始化为0;
- 默认初始化:如 `int a[10]={}`,所有元素均被初始化为0。
##### 特殊情况下的数组初始化
- 在`main()`函数外定义的数组若未指定初始化值,则默认为0;
- 在`main()`函数内定义的数组若未指定初始化值,则默认为随机数;
- 在`main()`函数内定义的数组,部分初始化后剩余元素默认为0。
##### 复制数组
复制数组可以通过两种主要方法实现:
- 使用循环逐一复制数组元素;
- 使用内存拷贝函数`memcpy`,例如`memcpy(b,a,sizeof(a)*k)`,这里*k*表示要复制的字节数,可以根据实际需要省略。
##### memset()
`memset`是C++中用于数组初始化的函数,其格式为`memset(<变量名>,0,sizeof(<变量名>))`,主要用于将数组的元素全部设置为0。
#### 二、二维数组
二维数组可以理解为数组的数组,通常用来表示表格或者矩阵。
##### 定义二维数组
二维数组的基本定义格式为:`<数据类型> <数组名>[常量表达式 1][常量表达式 2]`,例如`int a[3][4]`。
##### 引用二维数组
引用二维数组中的元素时,需要指定两个下标,格式为`<数组名>[常量表达式 1][常量表达式 2]`。
##### 初始化二维数组
初始化二维数组可以采用显式初始化的方式,如`int a[4][2]={{1,2},{23,43},{-1,2},{31,3}}`。
#### 三、字符数组和字符类型
字符数组用于存储字符串,而字符类型用于处理单个字符。
##### 字符常量定义
字符常量通过`const <字符常量>=<字符>`定义,例如`const char a='A'`。
##### 字符变量定义
字符变量定义为`char <字符变量>`,例如`char a;`。
##### 字符与字符串的区别
- 字符用单引号`' '`引起;
- 字符串用双引号`" "`引起。
##### 一维字符数组定义
一维字符数组的定义格式为`char <数组名>[<项数>]`,例如`char str[10]`。
##### 二维字符数组定义及特点
二维字符数组的定义格式为`char <数组名>[<项数>][<项数>]`,例如`char str[3][4]`。在二维字符数组中,每项可以包含多个字符,形成子字符串。
##### 字符串的概念
字符串是指带`\0`结束符的一维数组。需要注意的是,字符串是一维字符数组的一种特殊形式,但并非所有一维字符数组都是字符串。
##### 字符串与一维字符数组的关系
在一维字符数组中,可以存储多个带有`\0`结束符的字符串,如`char a[5]="abcd"`实际上表示`{'a','b','c','d','\0'}`。
##### 字符数组赋值
字符数组不能直接通过数组名赋值,需要使用字符串拷贝函数来完成赋值操作。
#### 四、字符串函数
字符串函数用于处理字符串,包括输入、输出、连接、复制、比较等操作。
##### 字符串输入
- `scanf(“%s”,<字符串名称>)`:读取字符串,遇到空格停止;
- `gets(<字符串名称>)`:读取一行字符串,直到遇到换行符或文件尾。
##### 字符串输出
- `printf(“%s”,<字符串名称>)`:输出整个字符串;
- `puts(<字符串名称>)`:输出字符串并自动换行。
##### 字符串函数
- `strcat(st1,st2)`:将`st2`追加到`st1`后面;
- `strncat(st1,st2,n)`:将`st2`的前`n`个字符追加到`st1`后面;
- `strcpy(st1,st2)`:将`st2`复制到`st1`;
- `strncpy(st1,st2,n)`:将`st2`的前`n`个字符复制到`st1`;
- `strcmp(str1,str2)`:比较`str1`和`str2`的大小;
- `strncmp(str1,str2,n)`:比较`str1`和`str2`的前`n`个字符;
- `strlen(st1)`:计算`st1`的长度(不包括`\0`);
- `strlwr(st1)`:将`st1`转换为全小写;
- `strupr(st1)`:将`st1`转换为全大写;
- `strstr(st1,st2)`:检查`st2`是否为`st1`的子串。
#### 五、函数与递归算法
在C++中,函数是程序的基本组成单元之一,用于实现特定的功能。
##### 函数定义
函数的定义通常包括以下几个要素:
- 函数的数据类型:决定了函数返回值的类型;
- 函数名:必须遵循C++标识符的命名规则;
- 形式参数列表:可以为空,表示函数不接收任何参数;
- 函数体:执行的具体代码。
##### 递归算法
递归是一种通过函数自身调用来解决问题的方法。递归函数必须有一个明确的终止条件,以避免无限循环。递归算法在解决某些问题时非常有效,例如树形结构的遍历、排序算法等。
通过以上内容的学习,初学者可以更好地掌握C++中的基本数据结构和函数,为进一步深入学习C++打下坚实的基础。
SHHD_0919
- 粉丝: 15
- 资源: 1
最新资源
- 人物检测26-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 人和箱子检测2-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 清华大学2022年秋季学期 高等数值分析课程报告
- GEE错误集-Cannot add an object of type <Element> to the map. Might be fixable with an explicit .pdf
- 清华大学2022年秋季学期 高等数值分析课程报告
- 矩阵与线程的对应关系图
- 人体人员检测46-YOLO(v5至v9)、COCO、Darknet、TFRecord数据集合集.rar
- GEMM优化代码实现1
- java实现的堆排序 含代码说明和示例.docx
- 资料阅读器(先下载解压) 5.0.zip