《C++》基础入门_08——利用数组实现对批量数据的处理

本文全面介绍了C++中的数组和字符串处理,包括一维和二维数组的声明、初始化和存储,数组作为函数参数的使用,字符数组的初始化与赋值,以及字符串的定义、赋值、输入输出和字符串处理函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下内容为大学期间学习C++语言总结的知识:

《C++》基础入门_01——数据存储,表示形式,基本运算
《C++》基础入门_02——面向对象的总体概括
《C++》基础入门_03——程序的开发过程
《C++》基础入门_04——四大语句
《C++》基础入门_05——函数详解篇
《C++》基础入门_06——面向对象的详述
《C++》基础入门_07——数据的共享保护:const
《C++》基础入门_08——利用数组实现对批量数据的处理
《C++》基础入门_09——指针和引用的讲解
《C++》基础入门_10——用户自定义数据类型详细篇
《C++》基础入门_11——友元的讲解
《C++》基础入门_12——类模板
《C++》基础入门_13——运算符的重载
《C++》基础入门_14——继承与派生
《C++》基础入门_15——多态性
《C++》基础入门_16——输入输出流详讲
《C++》基础入门_17——对象串行化
《C++》基础入门_18——异常处理
《C++》基础入门_19——命名空间
《C++》基础入门_20——文件操作
《C++》基础入门_21——在函数中返回数组的常用方法



概念——————————————————————————————————

  1. 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。
  2. 数组属于构造类型。
  3. C++中数组没有长度变量(length)

一、一维数组

  • 声明:
    类型说明符 数组名[常量表达式];

    例如:
    int a[10];

  • 使用

    1. 先声明,后使用
    2. 只能逐个引用数组元素,而不能一次引用整个数组

    a[0]=a[5]+a[7]+a[2*3];

  • 一维数组的存储顺序
    数组元素在内存中顺序存放, 它们的地址是连续的。
    在这里插入图片描述

  • 一维数组的初始化

  1. 在声明数组时对数组元素赋初值

    int a[10]={0,1,2,3,4,5,6,7,8,9};

  2. 可以只给一部分元素赋初值,其余为默认值

    int a[10]={0,1,2,3,4};

  3. 对全部数组元素赋初值时,可以不指定数组长度。

    int a[]={0,1,2,3,4,5,6,7,8,9};

二、二维数组

  • 二维数组的声明
    数据类型 标识符[常量表达式1][ 常量表达式2]

    int a[3][4];`
    在这里插入图片描述

  • 二维数组的存储
    按行存放,上例中数组a的存储顺序为:
    a

  • 二维数组的初始化
    若对所有元素都初始化,则数组第一维长度可以不指定,但是第二维必须指定

  1. 将所有数据写在一个{}内,按顺序赋初值

    int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

  2. 分行给二维数组赋初值

    int a[3][4]={{1,2,3,4},{5,6,7,8,},{9,10,11,12} };

  3. 对部分元素赋初值

    int a[3][4]={{1},{0,8},{0,1,2}};

三、数组作为函数参数

  • 数组元素作实参,与单个变量一样。
  • 数组名作参数,形、实参数都应是数组名,类型要一样,传送的是数组首地址。
  • 对形参数组的值进行改变会直接影响到实参数组。
  • 用数组元素作为实参
    将数组元素的值传给形参变量。
  • 用数组名作为实参
    若函数实参为数组名,形参应该也为数组名,也可以是指针变量,用于接收实参传递的地址。
    数组名代表数组首元素的地址,并不代表数组所有元素
    在这里插入图片描述

四、字符数组

用来存放字符数据的数组
一个元素存放一个字符

  • 初始化:
    与数组的初始化相同

    1. 单个赋值
    char c[4];
    c[0]='y';
    c[1]=' ';
    c[2]='s';
    c[3]='g';
    2.{}全部赋值
    char c[4]={'y',' ' ,'s','g'};
    3. 赋值一部分,剩下的默认为空字符  '\0'
    char c[6]={'y',' ' ,'s','g'};
    
  • 赋值与引用

    1. 只能对字符数组的元素赋值,而不能用赋值语句对整个数组赋值

      char c[4];c[0]=‘y’;c[1]=’ ‘;c[2]=‘s’;c[3]=‘g’;//正确
      char c[4]={‘y’,’ ’ ,‘s’,‘g’}; //错误,不可一次性赋值,只有初始化才可以

    2. 不可以将两个相同类型和长度的数组相互赋值

      若存在两个相同类型和长度的数组a、b且b已经被初始化
      a=b; //错误,a,b代表首元素地址,地址不可以被赋值
      a[0]=b[0]; //正确

  • 字符串和字符数组
    一个字符数组可以存放字符串。但是可能长度会不一致。
    系统会对字符串所有字符的最后面加一个’\0’,作为结束符标志。

    String s=“hello yj”; //长度8
    char s2[]={‘h’,‘e’,‘l’,‘l’,‘o’,’ ',‘y’,‘j’};//长度9
    系统会对字符串转换的字符数组最后自动填补空字符‘\0’;

    可以用字符串常量来初始化字符数组。

    char s[]={“hello baby”};
    或者 char s[]=“hello baby” ;

  • 字符数组的输入输出

    1. 逐个字符输出输入。

    2. 整个以字符串形式输出输入。

      char a[20];
      cin>>a;
      cout<<a;//输出的字符不包括空字符

    3. 若字符组数长度大于字符串实际长度,输出遇到空字符结束。

      char a[10]=“china”;
      cout<<a;//只输出5个字符遇到‘\0’结束

五、字符串

5.1 字符串变量

  • 定义

    1. 必须先把string类库加载进来。
      #include <string>
    2. 先定义后使用:
      string 变量名;
  • 赋值:

    1. 可以直接把字符串常量赋值给字符串变量

      string s=“china”;

    2. 用另一个字符串变量给字符串变量赋值;

      string s=s1;

  • 输入输出
    直接在输入输出语句中用字符数变量名。

    cout<<s;

  • 字符串变量的运算

    1. 复制直接用赋值号

      string1=string2;

    2. 连接用加好

      string s1=“c++”;
      string s2=“is difficult”;
      s1=s1+s2;//输出:c++is difficult

    3. 比较直接用关系运算符

5.2 字符串数组

可以用string定义字符串数组。

  1. 字符串数组的每个元素都是一个不定长的字符串
  2. 字符数组中每个元素的值只包含本身的值,不含空字符。

5.3 使用字符串处理函数

加头文件 string或string.h

  1. 字符串连接函数 strcat
    函数原型:strcat(char[],const char[]);
    作用:将第二个字符数组中的字符串连接在前面字符数组的字符串后面,连接后的字符串存放在第一个数组中并返回。
  2. 字符串复制函数strcpy
    函数原型:strcpy(char[] ,const char[]);
    作用:把第二个数组中的字符串复制到第一个字符串数组中,第一个数组中内容被覆盖。
    1. 第一个参数必须是数组名,第二个参数可以是字符串数组或者字符串常量。
    2. 可以将第二个参数中的若干个字符复制到第一个字符串数组中
      strcpy(str,str2,3)//将str2中的前2个字符复制到str中,然后再加个'\0'。
  3. 字符串比较函数strcmp
    函数原型:strcmp(const char[],const char[]);
    作用:比较两个字符串大小,从第一个字符开始比较,谁在字符表前面谁小。
    ==:函数值为0;
    >: 返会正整数;
    <: 函数值为一负数。
  4. 字符串长度函数strlen
    函数原型:strlen (const char[]);
    作用: 返会字符串实际长度,不包括‘\0’.

六、对象数组

  • 声明:
    类名 数组名[元素个数];
  • 访问方法:
    通过下标访问 数组名[下标].成员名
  • 初始化
    1. 数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象

    2. 通过初始化列表赋值。

      例:Point A[2]={Point(1,2),Point(3,4)};

    3. 如果没有为数组元素指定显式初始值,数组元素便使用默认值初始化(调用默认构造函数)

  • 数组元素所属类的构造函数
    1. 不声明构造函数,则采用默认构造函数。
    2. 各元素对象的初值要求为相同的值时,可以声明具有默认形参值的构造函数。
    3. 各元素对象的初值要求为不同的值时,需要声明带形参的构造函数。
    4. 当数组中每一个对象被删除时,系统都要调用一次析构函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值