数组与字符串操作讲解-大连理工大学软件学院
需积分: 9 138 浏览量
更新于2024-07-14
收藏 1.23MB PPT 举报
"这篇资源主要讲解了字符串习题和数组的相关知识,特别是在C++语境下的应用。内容涉及字符串的查找算法以及数组的各种操作,包括一维数组、二维数组、字符数组的定义、初始化和使用。同时,提到了动态数组和静态数组的区别,以及如何利用C++标准模板库(STL)中的`vector`来实现变长数组。"
在C++编程中,字符串是字符数组的一种特殊形式,经常用于处理文本数据。字符串习题中涉及了两个关键的算法:
1. `find(char str[], char substr[])`:这个函数用于查找`substr`在`str`中出现的位置。它忽略了大小写,如果找到`substr`,则返回其在`str`中的起始位置;如果没有找到,则返回-1。注意,这个函数只会返回第一个匹配的位置。
2. `substring(char str[], int beg, int end, char substr[])`:此函数计算`substr`在`str`的子串`[beg, end]`中出现的次数。例如,对于字符串"This is a test.",如果查询从第一个字符到第10个字符的子串中"is"的出现次数,`substring(test, 1, 9, "is")`将返回2。
数组是C++中基本的数据结构之一,分为一维数组、二维数组和字符数组。一维数组是最简单的形式,可以看作是一条线性的数据存储结构。数组的特点包括:
- 数组是一组类型相同的数据集合,它们在内存中占据连续的空间。
- 数组名实际上存储的是数组首元素的地址。
- 数组的大小在声明时必须是常量,对于静态数组,大小在编译时即确定;对于动态数组,大小可以在程序运行时决定。
在C++中,可以使用`new`运算符来动态分配数组,如`int *p = new int[len];`。当不再需要数组时,应使用`delete[]`释放内存,例如`delete[] p;`。
此外,C++标准模板库(STL)中的`vector`类提供了一种更灵活的动态数组实现,它可以自动扩展大小。例如,`vector<int> array(len);`创建了一个长度为`len`的整数向量,可以通过索引或迭代器进行访问和操作。
数组的初始化通常在声明时完成,可以使用初始化列表。例如,对于整型数组`int iArr[3]={1,2,3};`,浮点型数组`float fArr[4]={3.14};`,字符数组`char cName[]="Jackson";`,字符串数组`char *pName[3]={"Spanish","German"};`,结构体数组`StructStudents[3]={{1001,"linlin"},{1020,"Kelvin"}};`,甚至自定义类型数组`Box shoesbox[3]={Box(1,2,3),Box(3,4,5)};`。
访问数组元素通常通过数组名和下标完成,如`a[0]`到`a[n-1]`,其中`n`是数组的大小。数组元素的引用和赋值都是通过这种下标方式完成的。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-10-10 上传
2020-02-19 上传
2009-08-05 上传
2011-06-16 上传
2022-11-16 上传
2011-09-15 上传
辰可爱啊
- 粉丝: 18
- 资源: 2万+
最新资源
- 行业分类-设备装置-一种具有储气装置的硬质合金冷却过滤设备.zip
- Star-Wars-Website:这是一个练习
- RF 一分八 SWITCH(0-6G).zip
- Auth0Test
- 行业分类-设备装置-一种六齿轮复杂轮系可变换教具.zip
- linked_list
- vc6开发的sip软交换
- ovn-ontology:这是一个使用http构建的本体
- ms-dropdown-rails:将ms-下拉列表添加到您的Rails资产管道中
- Zer0sum:我正在尝试用统一游戏引擎制作我的第一个(不是真的)二维平台游戏
- speedprogramming_pteufl
- Robinhoot:Robinhood的可视化Web应用程序和核心功能的副本,这些功能利用Ruby on Rails和IEX Cloud API
- 行业分类-设备装置-一种全自动调节式防伪纸张过数装置及方法.zip
- pwa_shop-finder
- MvgSoft:来自运动的结构
- sigProject