嵌入式Qt开发C++基础编程数组和结构体
文章目录
1、数组和结构体
1.数组
在C++中,数组是用于存储固定数量相同类型元素的集合。这些元素在内存中连续存储,这意味着数组的地址是连续的,并可以通过索引来访问。数组在C++中是一个基本的数据结构,广泛应用于各种编程任务中。
1.声明数组
在C++中,可以使用以下语法来声明数组:
dataType arrayName[arraySize];
其中,dataType
是数组中元素的类型(如 int
, float
, char
等),arrayName
是数组的名称,arraySize
是一个常量表达式,表示数组中元素的数量。
下面是个数组定义实例
#include "iostream"
#include "random"
using namespace std;
//定义指定范围的随机数
int random(int min, int max) {
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<int> dis(min, max);
return dis(gen);
}
int GuessArr[10];
int main() {
int num = random(1, 10);
int count = 0;
for (int i = 0; i <10 ; ++i) {
cout << "请输入第" << i + 1 << "个数字:";
cin >> GuessArr[i];
}
for (int j : GuessArr) {
cout << j << "\t";
}
for (int k : GuessArr) {
if (k == num)
{
count++;
}
}
cout << "猜对了" << count << "个" << endl;
return 0;
}
数组的名称实质上数组第一个元素的地址。
除此之外,数组还有一维数组,二维数组以及多维数组。
int arrname[2][2] = {{1 , 2},{3 , 4}};
可以理解拆分为了两个一维数组的嵌套,这两个一维数组都是两个元素。
2.初始化数组
在声明数组时,可以为其指定初始值。这可以在声明时通过花括号 {}
来完成。
int myArray[5] = {1, 2, 3, 4, 5};
如果初始化时提供的元素数量少于数组的大小,那么剩余的元素将被初始化为该类型的默认值(对于内置类型,通常是0或空字符)。
int anotherArray[10] = {1, 2, 3}; // 其他元素将被初始化为0
3.访问数组元素
可以通过索引来访问数组中的元素。索引从0开始,到数组大小减1结束。
std::cout << myArray[0]; // 输出1
std::cout << myArray[4]; // 输出5
std::cout << arrname[0][0] // 输出1
4.数组长度的计算
数组长度可以通过函数进行计算
sizeof(arr); // 通过sizeof 计算数组的总长度
sizeof(arr[0]); // 计算单个元素的长度
length = sizeof(arr) / sizeof(arr[0]); // 数组元素的个数
6.数组的遍历
数组在遍历的过程中可以通过for循环遍历。
int arrname[4] = {1 , 2 , 3 , 4};
for(int i = 0;i < 4;i++)
{
cout << arrname[i] << endl;
}
也可以通过C++的新标准进行遍历,如:
for (int j : GuessArr) {
cout << j << "\t";
} // 这里的GuessArr为数组名
遍历多维数组则需要多个for循环嵌套。
int arr[2][2] = {{1,2},{3,4}};
for(int i = 0;i < sizeof(arr) / sizeof(arr[0]);i++){
for(int j = 0; j < sizeof(arr[0]) / sizeof(arr[0][0]);j ++){
cout << arr[i][j];
}
}
多维数组遍历就需要多少层的遍历。
7.数组越界
需要注意的是,C++不会自动检查数组索引是否越界。如果尝试访问超出数组范围的元素,将会导致未定义的行为,这通常是严重的错误。因此,在编写代码时,应始终确保索引在有效范围内。
2.结构体
结构体(struct)是一种复合数据类型,它允许你将多个不同类型的变量组合成一个单独的类型。
1.定义结构体
使用struct
关键字来定义结构体。结构体内部可以包含多个不同类型的变量(称为成员)。
struct 结构体名称 {
数据类型 成员变量1;
数据类型 成员变量2;
// ...
};
2.访问结构体成员
通过结构体变量使用.
操作符来访问结构体中的成员。
结构体变量.成员变量名;
3.结构体变量的定义和初始化
可以在定义结构体变量的同时初始化其成员。
struct 结构体名称 变量名 = {初始化值1, 初始化值2, ...};
如果结构体变量在定义时没有初始化,其成员将自动被初始化为0(对于基本类型)或空指针(对于指针类型)。
4.定义结构体
首先定义结构体类型和成员。
struct Student {
char name[50];
int age;
float score;
};
5.创建结构体变量
使用结构体类型创建变量,并初始化(如果需要)。
struct Student stu1 = {"Alice", 20, 90.5};
struct Student stu2; // 未初始化
6.访问和修改成员
通过结构体变量来访问和修改其成员。
printf("Name: %s\n", stu1.name);
stu1.age = 21;
7.结构体数组
可以定义结构体数组,用于存储多个具有相同类型属性的对象。
struct Student students[3] = {
{"Alice", 20, 90.5},
{"Bob", 21, 85.0},
{"Charlie", 19, 92.0}
};
8.结构体指针
可以使用指针来访问结构体变量,这在处理大型结构体或需要动态分配内存时非常有用。
struct Student *p = &stu1;
p -> name;// 使用->操作符访问指针指向的结构体成员
9.结构体嵌套
一个结构体的成员可以是另一个结构体类型。
struct Address {
char street[100];
char city[50];
char country[50];
};
struct Person {
char name[50];
int age;
struct Address address; // 嵌套的结构体成员
};
在C++中,结构体是一种非常有用的工具,它允许你组织和管理相关的数据。通过使用结构体,你可以创建更复杂的数据类型,并编写更易于理解和维护的代码。