C++初学者必看学习笔记

preview
需积分: 0 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++打下坚实的基础。