嵌入式Qt开发C++基础编程数组和结构体

嵌入式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++中,结构体是一种非常有用的工具,它允许你组织和管理相关的数据。通过使用结构体,你可以创建更复杂的数据类型,并编写更易于理解和维护的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FightingLod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值