【C++漂流记】结构体的定义和使用、结构体数组、结构体指针、结构体做函数参数以及结构体中const的使用

这篇具有很好参考价值的文章主要介绍了【C++漂流记】结构体的定义和使用、结构体数组、结构体指针、结构体做函数参数以及结构体中const的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

结构体(struct)是C语言中一种重要的数据类型,它由一组不同类型的成员组成。结构体可以用来表示一个复杂的数据结构,比如一个学生的信息、一个员工记录或者一个矩形的尺寸等。
结构体定义后,可以声明结构体变量,每个结构体变量包含结构体类型的所有成员。结构体变量中的每个成员可以是不同的数据类型,比如int、float、char等。
在结构体中,每个成员有自己的名称和数据类型,描述了结构体的内存布局。访问结构体成员可以使用点运算符(.)或者箭头运算符(->)。
结构体还可以嵌套,即在一个结构体中可以包含另一个结构体类型的成员。这种嵌套可以用来表示更复杂的数据结构。
【C++漂流记】结构体的定义和使用、结构体数组、结构体指针、结构体做函数参数以及结构体中const的使用,C++漂流记,c++,java,开发语言

一、结构体的定义和使用

在C++中,结构体是一种用户自定义的数据类型,它可以包含不同类型的数据成员。结构体的定义和使用类似于C语言中的结构体,但是在C++中有一些额外的功能和特性。

示例代码:

#include <iostream>

// 定义一个结构体
struct Person {
    std::string name;
    int age;
    std::string address;
};

int main() {
    // 创建一个结构体变量并初始化
    Person person1 = {"Alice", 25, "123 Main St."};

    // 访问结构体的成员
    std::cout << "Name: " << person1.name << std::endl;
    std::cout << "Age: " << person1.age << std::endl;
    std::cout << "Address: " << person1.address << std::endl;

    // 修改结构体成员的值
    person1.age = 30;
    std::cout << "Updated Age: " << person1.age << std::endl;

    return 0;
}

代码解释:

在上面的例子中,我们首先使用struct关键字定义了一个名为Person的结构体,并在其中定义了三个数据成员:nameageaddress。接下来,在main()函数中,我们创建了一个名为person1Person类型的结构体变量,并使用初始化列表对其成员进行了初始化。然后,我们使用.运算符来访问结构体的成员,并输出了它们的值。最后,我们修改了person1age成员的值,并再次输出了它的新值。


二、结构体数组

结构体数组是一种包含多个结构体的数据结构。它可以通过定义结构体类型并使用该类型来声明和初始化数组。结构体数组通常用于存储具有相同结构的数据项。

示例代码:

#include <stdio.h>

// 定义一个结构体类型
struct Person {
    char name[50];
    int age;
};

int main() {
    // 声明并初始化一个结构体数组
    struct Person people[3] = {
        {"Alice", 25},
        {"Bob", 30},
        {"Charlie", 35}
    };

    // 访问结构体数组的成员
    for (int i = 0; i < 3; i++) {
        printf("Person %d: %s, %d\n", i+1, people[i].name, people[i].age);
    }

    return 0;
}

代码解释:
在上面的代码中,我们首先定义了一个名为Person的结构体类型,其中包含一个字符数组name和一个整数age。然后,在main()函数中,我们声明并初始化了一个包含三个Person结构体的数组people。接下来,我们使用for循环遍历结构体数组,并使用.运算符访问每个结构体的成员。最后,我们输出了每个结构体的成员值。


三、结构体指针

结构体指针是一种指针类型,用于存储结构体变量的地址。通过结构体指针,我们可以间接地访问和修改结构体的成员。

示例代码:

#include <stdio.h>

// 定义一个结构体类型
struct Point {
    int x;
    int y;
};

int main() {
    // 声明一个结构体变量
    struct Point p1 = { 10, 20 };

    // 声明一个指向结构体的指针
    struct Point *p2 = &p1;

    // 通过指针访问结构体的成员
    printf("p2->x: %d\n", p2->x);
    printf("p2->y: %d\n", p2->y);

    // 通过指针修改结构体的成员
    p2->x = 30;
    p2->y = 40;
    printf("p1->x: %d\n", p1.x);
    printf("p1->y: %d\n", p1.y);

    return 0;
}

代码解释:

在上面的代码中,我们首先定义了一个名为Point的结构体类型,其中包含两个整数成员xy。然后,在main()函数中,我们声明了一个Point类型的结构体变量p1,并初始化了它的成员。接着,我们声明了一个指向Point类型的指针p2,并将p1的地址赋值给它。

通过指针p2,我们可以使用->运算符来访问结构体的成员。例如,p2->x表示访问结构体变量p1x成员。同时,我们也可以通过指针来修改结构体的成员,例如将p2->x修改为30。由于p2指向的是p1的地址,因此对p2->x的修改也会影响到p1.x的值。最后,我们输出了修改后的p1.xp1.y的值。


四、结构体嵌套

结构体嵌套是指在一个结构体中嵌套另一个结构体,通常用于构建复杂的数据结构。在C语言中,可以通过定义嵌套的结构体来实现。

示例代码:

#include <stdio.h>

// 定义一个结构体类型
struct Person {
    char name[50];
    int age;
};

// 定义一个嵌套的结构体类型
struct Student {
    struct Person person;  // 嵌套一个Person结构体
    int grade;
};

int main() {
    // 声明并初始化一个Student结构体变量
    struct Student student = {
        {"Alice", 20},
        90
    };

    // 访问Student结构体的成员
    printf("Name: %s\n", student.person.name);
    printf("Age: %d\n", student.person.age);
    printf("Grade: %d\n", student.grade);

    return 0;
}

代码解释:

在上面的代码中,我们首先定义了一个名为Person的结构体类型,其中包含一个字符数组name和一个整数age。然后,我们定义了一个名为Student的嵌套结构体类型,其中包含一个Person类型的成员变量person和一个整数grade。在main()函数中,我们声明并初始化了一个Student类型的结构体变量student。通过使用点运算符,我们可以访问student的成员,例如student.person.namestudent.person.agestudent.grade。输出结果将显示Alice2090


五、结构体做函数参数

结构体作为函数的参数可以传递结构体变量的值,以便在函数内部对该结构体变量进行操作。这样可以将数据作为整体传递,避免了传递多个单独的变量带来的麻烦。

示例代码:

#include <stdio.h>

// 定义一个结构体类型
struct Point {
    int x;
    int y;
};

// 定义一个函数,接受一个Point类型的结构体作为参数
void printPoint(struct Point p) {
    printf("x: %d, y: %d\n", p.x, p.y);
}

int main() {
    // 声明并初始化一个Point类型的结构体变量
    struct Point p = { 10, 20 };

    // 调用函数,将结构体变量作为参数传递
    printPoint(p);

    return 0;
}

代码解释:

在上面的代码中,我们首先定义了一个名为Point的结构体类型,其中包含两个整数成员xy。然后,我们定义了一个名为printPoint的函数,该函数接受一个Point类型的结构体作为参数。在main()函数中,我们声明并初始化了一个Point类型的结构体变量p,并将其作为参数传递给printPoint函数。在函数内部,我们可以使用结构体变量p的成员来输出结果。


六、结构体中const的使用

在结构体中,const关键字可以用于修饰成员变量或成员函数,用于确保它们在结构体中的值或行为保持不变。

  1. const成员变量:
struct MyStruct {
    const int myConstVar;
};

在上面的代码中,myConstVar是一个const成员变量,它在结构体创建时被初始化,并且其值不能被修改。const成员变量的初始化应该在结构体声明的初始化列表中进行。

  1. const成员函数:
struct MyStruct {
    int myVar;
    void myConstFunc() const {
        // 这个成员函数不能修改myVar的值
    }
};

在上面的代码中,myConstFunc()是一个const成员函数,它不能修改结构体的任何成员变量的值。这可以通过在函数声明的末尾添加const关键字来实现。

  1. const指针成员:
struct MyStruct {
    int myVar;
    const int* myConstPtr;
};

在上面的代码中,myConstPtr是一个const指针成员,它指向一个const整数。通过这个指针不能修改所指向的值。如果需要修改所指向的值,需要使用非const指针或通过其他方式传递修改后的值给结构体。文章来源地址https://www.toymoban.com/news/detail-703899.html

到了这里,关于【C++漂流记】结构体的定义和使用、结构体数组、结构体指针、结构体做函数参数以及结构体中const的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 结构体的使用和结构体指针的定义注意事项

    1、使用背景      由于想把不同地方的三个变量数据存放在一个结构体中,并且调用W25QXX_Write((u8*)p,FLASH_SIZE-100,SIZE); //从倒数第100个地址处开始,写入SIZE长度的数据。调用flash写数据函数,其参数为指针地址,于是需要定义一个结构体和指向结构体的指针,这样调用flash写函数

    2024年01月20日
    浏览(53)
  • 【C++】结构体 - 定义和使用,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,结构体 const

    结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。 struct 结构体 {结构体成员列表}; 通过结构体创建变量的方法有三种: struct 结构体名 变量名 struct 结构体名 变量名 = {成员1值, 成员2值, …} 定义结构体时顺便创建变量 总结三点: 定义结构体时的是

    2024年02月07日
    浏览(55)
  • C语言自定义类型:结构体的使用及其内存对齐【超详细建议点赞收藏】

    结构是一些值的集合,这些值称为 成员变量 。 结构的每个成员可以是不同类型的变量 。 注意 : 成员列表可以是不同类型的变量; 成员后一定要有分号; 花括号后也有一个分号。 例如描述一个学生: 注意:上述代码没有创建变量,也没有初始化, 只是声明了一个结构体类

    2024年03月13日
    浏览(56)
  • 【C语言13】结构体的声明,定义与结构体的内存对齐

    通俗的说,结构体就是一个类的集合,如同整形数组是整形数字的集合体,结构体也是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 如果我们要表达一本书,那么这本书的元素有什么呢,书的名字,书的作者,书的创作日期~,而c语言中内置

    2024年02月13日
    浏览(72)
  • 结构体的不定长数组,用起来就是这么爽

    结构体数组不定长的做法,有两种 第一种: 指针 第二种:长度为0的数组 1. 结构体的数组指针 特点 : 结构体初始化时,可以是结构体指针,如struct tag_info *pInfo = NULL; 也可以是结构体变量, 如 struct tag_info Info = {‘\\0’}; 使用结构体里面的指针时,必须申请内存,进行初始化

    2024年02月16日
    浏览(42)
  • 结构体和数据结构--从基本数据类型到抽象数据类型、结构体的定义

            在冯-诺依曼体系结构中,程序代码和数据都是以二进制存储的,因此对计算机系统和硬件本身而言,数据类型的概念其实是不存在的。         在高级语言中,为了有效的组织数据,规范数据的使用,提高程序的可读性,方便用户使用,引入了整型、实型等基本数

    2024年02月11日
    浏览(48)
  • 结构体的三种定义方法、结构体类型名(可选标志符)什么时候可以省略

    一、单独定义:   先定义结构体类型,再定义变量   定义结构体的格式如下:    struct 结构体名 {    若干数据项;    } ;   其中,struct为; 结构体名是用户定义的类型标识。 { }中是组成该结构体的成员。成员的数据类型可以是C语言所允许的任何数据

    2024年02月05日
    浏览(51)
  • C++编程案例讲解-基于结构体的控制台通讯录管理系统

    添加联系人 :向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人 显示联系人 :显示通讯录中所有的联系人信息 删除联系人 :按照姓名进行删除指定联系人信息 查找联系人 :按照姓名查看指定联系人信息 修改联系人 :按照姓名重新

    2024年02月05日
    浏览(69)
  • C语言自定义数据类型(二)使用结构体数组

    一个结构体变量中可以存放一组有关联的数据(如一个学生的学号、姓名、成绩等数据)。如果有 10 个学生的数据需要参加运算,显然应该用数组,这就是结构体数组。结构体数组与以前介绍过的数值型数组的不同之处在于每个数组元素都是一个结构体类型的数据,它们都分别

    2024年01月19日
    浏览(49)
  • 结构体的使用

    结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员” ,其描述了一块内存区间的大小及解释意义。 struct 结构体名 { 数据类型 成员变量1; 数据类型 成员变量2; 数据类型 成员变量3; … }; 举例:构造一个新的数据类型叫student,用来

    2024年02月02日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包