c++学习笔记07 结构体

简介: C++结构体的详细学习笔记07,涵盖了结构体的定义、使用、数组、指针、嵌套、与函数的交互以及在结构体中使用const的示例和解释。
用途

用于自定义数据类型,一些基本类型的集合组成的一个类型

基本形式
sturct 结构体名{
   成员列表};
AI 代码解读
定义结构体并创建结构体变量

定义结构体

struct Student
{
   
    string name;
    int age;
    int score;
};
AI 代码解读

创建结构体有3种办法
法1:先创建结构体变量再给结构体变量的属性赋值

//法1:先定义结构体变量再给结构体变量的属性赋值
Student s1;
s1.name = "zhangSan";
s1.age = 18;
s1.score = 80;
AI 代码解读

法2:创建结构体变量时同时给属性赋值

struct Student s2 = {
    "liSi",19,100 };
AI 代码解读

法3:定义结构体时顺便创建一个结构体变量

struct Student
{
   
    string name;
    int age;
    int score;
}s3;//法3:定义结构体时顺便创建一个结构体变量
AI 代码解读
结构体数组
struct Student stuArray[3] =
{
   
    {
    "liSi",19,100 },
    {
    "WangWu",8,70 },
    {
    "ZhaoLiu",50,30 }

};
AI 代码解读
结构体指针

结构体指针
直接访问结构体变量的属性时,用 结构体变量名.属性名即可访问 如:stu1.name
使用指针来访问结构体变量的属性的时候用 指针变量名->结构体变量的属性名 如:p->name

struct Student s = {
    "liSi",19,100 };
struct Student* p = &s;//指针指向结构体变量
p->score = 80;
cout << "name: " << p->name << " age: " << p->age << " score: " << p->score << endl;
AI 代码解读
结构体嵌套结构体

结构体的子结构体要在结构体之前定义以免报错

struct Student  //学生是老师结构体的子结构体,要在老师结构体前定义
{
   
    string name;
    int age;
    int score;
};
struct Teacher
{
   
    string name;
    int id;
    struct Student stu;

};
AI 代码解读

结构体的子结构体在结构体后面加一个. 比如:t.stu.name
主程序中使用范例:

Teacher t;
t.name = "wanglaoshi";
t.id = 010001;
t.stu.name = "herman";
t.stu.age = 10;
t.stu.score = 100;
AI 代码解读
结构体与函数

区别结构体的值传递与地址传递

void printStruct_value(struct Student s1)//值传递
{
   
    s1.age = 200;
    cout << "val    name: " << s1.name << " age: " << s1.age << " score: " << s1.score << endl;
}
void printStruct_address(struct Student *p)//地址传递
{
   
    p->age = 400;
    cout << "address    name: " << p->name << " age: " << p->age << " score: " << p->score << endl;
}
AI 代码解读

主程序使用:

printStruct_value(stu);
printStruct_address(&stu);
AI 代码解读
结构体中const的使用

结构体数组传入函数时,常常量大,为避免值传递新建空间消耗内存过多,常使用地址传递,指针只占用4个字节
同时为了避免地址传递类型的函数不小心修改了结构体变量的值,在传入函数时,命名成常量指针
以便于读数据时不对数据进行修改,可以理解为**“只读”模式**
这个‘常量不可修改’的限制只在函数内存在,因为不是这个结构体变量本身变成了常量,而是只有在使用这个指针时才会受到const的限制

错误示例:

void printStruct(const struct  Student*  p)//const的使用
{
   
    p->age = 400;//报错:试图修改常量
    cout << "address    name: " << p->name << " age: " << p->age << " score: " << p->score << endl;
}
AI 代码解读
目录
打赏
0
0
0
0
27
分享
相关文章
|
5月前
|
C++
继续更新完善:C++ 结构体代码转MASM32代码
继续更新完善:C++ 结构体代码转MASM32代码
【C++核心】结构体、共用体详解
这篇文章详细讲解了C++中结构体和共用体的概念、定义、使用场景和案例,包括结构体的创建、数组、指针、嵌套、函数参数传递,以及共用体的特点和应用实例。
68 4
|
6月前
|
【C/C++学习笔记】C++声明与定义以及头文件与源文件的用途
【C/C++学习笔记】C++声明与定义以及头文件与源文件的用途
88 0
|
6月前
|
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
69 0
|
6月前
|
C++
【学习笔记】【C/C++】 c++字面值常量
【学习笔记】【C/C++】 c++字面值常量
61 1
|
6月前
|
C++
c++学习笔记09 引用
C++引用的详细学习笔记,解释了引用的概念、语法、使用注意事项以及引用与变量的关系。
48 0
c++学习笔记08 内存分区、new和delete的用法
C++内存管理的学习笔记08,介绍了内存分区的概念,包括代码区、全局区、堆区和栈区,以及如何在堆区使用`new`和`delete`进行内存分配和释放。
67 0
|
6月前
|
c++学习笔记06 指针
C++指针的详细学习笔记06,涵盖了指针的定义、使用、内存占用、空指针和野指针的概念,以及指针与数组、函数的关系和使用技巧。
44 0
|
6月前
|
c++学习笔记05 函数
C++函数使用的详细学习笔记05,包括函数的基本格式、值传递、函数声明、以及如何在不同文件中组织函数代码的示例和技巧。
45 0
c++学习笔记05 函数
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等