第5章 数组和字符串处理

91 阅读3分钟

第5章 数组和字符串处理

数组的特点:

  • 数组中的每个数据元素都是相同的数据类型
  • 数组是由连续的内存位置组成的

5.1 一维数组

// 一维数组定义的三种方式
数据类型  数组名[ 数组长度 ]; 
​
数据类型  数组名[ 数组长度 ] = { 值1,值2 ...};
//自动确定数组长度
数据类型  数组名[ ] = { 值1,值2 ...};
​
static int A[10]//默认各元素的值为0
    
int A[10]//各元素的值为随机数

① 数组名的命名规范与变量名命名规范一致,不要和变量重名

② 数组中下标是从0开始索引

③ 数组一经定义,数组长度就始终不变。(数组长度≥1)

④ 初值列表提供的元素个数不能超过数组长度,可以小于,剩余初始化为0.

#include<iostream>
using namespace std;
void main() {
    int arr[] = {1,2,3,4};
    cout<<"整个数组所占内存空间为:" << sizeof(arr) << endl;
​
    cout<<"单个数组元素的内存空间:" << sizeof(arr[0]) << endl;
​
    cout<<"数组元素的个数:" << sizeof(arr)/ sizeof(arr[0]) << endl;
​
    cout << "直接打印arr1会打印出该数组的首地址:" << arr << endl;
​
    cout << "数组中第一个元素地址:" << &arr[0] << endl;
​
    cout << "数组中第二个元素地址:" << &arr[1] << endl;
}

① 直接打印数组名,可以查看数组所占内存的首地址

② 对数组名进行sizeof,可以获取整个数组占内存空间的大小

③ 获取数组元素个数:sizeof(arr)/ sizeof(arr[0])

// 冒泡排序小练习
int main() {
    int arr[9] = { 4,2,8,0,5,7,1,3,9 };
    for (int i = 0; i < 9 - 1; i++)
    {
        for (int j = 0; j < 9 - 1 - i; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
    for (int i = 0; i < 9; i++)
    {
        cout << arr[i] << endl;
    }
    system("pause");
    return 0;
}

5.2 字符串处理

原始C采用字符数组存放字符串,其元素是一个个的字符。

字符数组定义格式:char 字符数组名[常量表达式]

① C++语言规定字符串是以’\0’(ASCII值为0)字符作为结束符的字符数组。

② 只要遇到数组元素是空字符,就表示字符串在此位置上结束

③ 由于字符串实际存放在字符数组中,所以定义字符数组时数组的长度至少为字符串长度加1(空字符也要占位)。

④ C++总是在编译时为字符串常量自动在其后增加一个空字符

⑤ 字面值 ‘A’ 表示的是单独字符 A ,而字符串 “A” 代表了一个包含两个字符的字符数组,分别是字母 A 和空字符。

//① 使用标准输入输出流,将整个字符串一次输入或输出。
char str[80];
cin >> str ; // 输入字符串
cout << str ; //输出字符串//使用字符串输入输出函数
char str[80];
gets_s(str); //输入字符串
int resn = puts(str);//输出字符串,且puts输出不包含空字符,resn返回输出字符的个数

C++标准库提供了兼容C语言的字符串处理函数,其头文件为string。

字符串常用功能:

解释说明
s.erase(pos, len)删除从 pos 开始的 len 个字符,省略len删除pos后所有字符。
s.assign(args)将 s 中的字符替换为 args 指定的字符,并返回指向s的引用。
s.append(args)将 args 追加到 s ,返回一个指向 s 的引用,args 必须是双引号字符串
s.replace(range, args)将 s 中范围为 range 内的字符替换为 args 指定的字符
to_string(val)将数值 val 转换为 string 并返回,val 可以是任何算术类型(int、浮点型等)
stoi(s)字符串 转换为整数并返回
stof(s)字符串 转换为浮点数并返回
s.substr(pos, n)从索引 pos 开始,提取连续的 n 个字符,包括 pos 位置的字符
reverse(s2.begin(), s2.end())反转 string 定义的字符串 s2 (加头文件algorithm )
strcat( s, args)字符串连接函数
strcpy( s, args)字符串拷贝函数
strcmp(s1 , s2)字符串比较函数
strlen(s)字符串长度函数