【C++基础】04 数据类型与数组

01 前言

数组存储基础数据类型

image-20250827155456790

自定义数据类型

image-20250827155515395

02 如何声明/定义一个数组

  1. 指明数组元素的类型
  2. 指明数组名称
  3. 指明数组大小
image-20250827155703449

声明和定义的区别:

image-20250827155831543

03 数组的初始化(定义的同时赋初值)

  1. 给所有元素都指明值
int nArray[3] ={0,1,2};
// 0 1 2
  1. 给所有元素赋同一个值
int nArray[3] = {0};
// 0 0 0

整体赋值的唯二方式如上

04 数组的初始化(先定义后赋初值)

通过循环遍历数组:(ARRAY_SIZE 可以使用sizeof()进行获取)

for (int i=0;i<ARRAY_SIZE;i++)
{
nArray[i]=i;
//或通过任何合理的其它方式进行赋值
}

通过数组名和下标访问数组元素

:warning: 注意: 数组下标从0开始1到数组大小-1结束

原理即为爬楼梯原理

image-20250827161008060

04.01 常见问题–数组越界

为什么会发生这种情况?

使用小于0或者大于(大于-1)的下标访问数组元素

或未初始化数组元素

所以要确保访问元素的范围为[0,大小-1]

05 数组的唯度

即空间唯度,如下表

image-20250827161519606

06 结构体

把多个属性绑定在一起形成一个结构化新的数据类型(属于自定义的数据类型)

从而形成聚合数据类型

例如

方式一:先声明后定义

struct Item
{
std::string sName;
std::int nCount;
float fPrice;

}; //声明结构体
struct Item milk,tissue;
//定义结构体的变量

方式二:声明结构体的同时定义了两个结构体变量

struct Item
{
std::string sName;
std::int nCount;
float fPrice;
}milk,tissue

07 typedef

为复杂的数据类型设置一个别名

比如说为我要为unsigned int这个数据类型设置一个别名

我们可以这样写

typedef unsigned int uint;

则我们可以用uint来表面unsigned int的数据类型

为复杂的数据类型设置一个信息量更大的别名

例如我们定义一个结构体为Item

typedef struct ItemTosell
{
std::string sName;
int nCount;
float fPrice;
}Item;
Item milk,tissue;

即我们把ItemTosell这个结构体定义了一个别名Item

注意与上面结构体写法方式二进行区分

或者我们先写一个结构体,再对结构体的变量进行定义

struct ItemTosell
{
std::string sName;
int nCount;
float fPrice;
};
typedef ItemTosell item;
item milk,tissue;

08 使用”.”运算符访问结构体成员数据

方法: 使用”.”+变量名进行访问

tissue.fPrice=1.5f;
std::cout<<milk.nCount;

实战代码:

# include <iostream>
using namespace std;

int main(){
struct OneStudentatschool{
string name;
unsigned int student_age;
unsigned int student_id;

}student1,student2;
student1.name ="xiaoming";
student1.student_id=01;
student1.student_age=18
;
student2.name="xiaohua";
student2.student_id=02;
student2.student_age = 22;

cout<<student1.name<<endl;
cout<<student1.student_age<<endl;
cout<<student1.student_id<<endl;



}

09 联合体

image-20250827174413227

Tips: 当我们只希望一个结构体中的某唯一项生效时,我们使用联合体

10 枚举类型

image-20250827175226749