结构体相关知识

#include<iostream>
#include<string>
using namespace std;
//结构体的定义
struct Student
{  
    //成员列表
    string name;
    int age;
    float score;
}s3;

int main()
{
    //结构体变量的创建1;
    struct Student s1;
    s1.name = "张三";
    s1.age = 19;
    s1.score = 93;
    cout << "name:" << s1.name << "age:" << s1.age << "score:" << s1.score << endl;
    //结构体变量的创建2;
    struct Student s2;
    s2 = { "李四",18,90 };
    cout << "name:" << s2.name << "age:" << s2.age << "score:" << s2.score << endl;
    //结构体变量的创建3;
    s3 = { "王五",19,98 };
    cout << "name:" << s3.name << "age:" << s3.age << "score:" << s3.score << endl;

    //结构体数组的创建
    struct Student array[3] =
    {
        {"张三",19,93},
        { "李四",18,90},
        { "王五",19,98}
    };
    //给结构体变量赋值;
    array[1].name = "小明";
    array[1].age = 19;
    array[1].score = 92;

    for (int i = 0; i < 3; i++)
    {
        cout << "name:" << array[i].name << "age:" << array[i].age << "score:" << array[i].score << endl;
    }
    //利用指针进行访问;
    struct Student s4 = { "小红",18,94 };
    struct Student* p = &s4;
    cout << "name:" << p->name << "age:" << p->age << "score:" << p->score << endl;

    return 0;

}

在C语言中,结构体(struct)是一种自定义数据类型,用于组合不同类型的变量或常量,创建一个全新的数据单元,以便更好地组织和管理数据。结构体能够让我们以模块化的方式存储和操作相关的数据。下面是详细的概念和使用方法: 1. 定义结构体: 结构体声明通常包含一系列字段,每个字段都有自己的名称和类型。例如: ```c struct NameAndAge { char name[50]; // 字符数组,用来存储姓名 int age; // 整型,用来存储年龄 }; ``` 这里定义了一个名为`NameAndAge`的结构体,包含两个成员:name 和 age。 2. 声明结构体变量: 可以像定义普通变量一样声明结构体变量,并为它们分配内存空间。例如: ```c struct NameAndAge student; // 创建一个NameAndAge类型的结构体变量student ``` 3. 访问结构体字段: 使用`.`运算符来访问结构体中的成员: ```c student.name = "Alice"; // 设置姓名 student.age = 20; // 设置年龄 printf("Student's name: %s\n", student.name); // 打印姓名 ``` 4. 结构体指针: 结构体变量也可以有指针,这使得我们可以动态地分配结构体内存并操作其内容: ```c struct NameAndAge *ptr = malloc(sizeof(struct NameAndAge)); // 动态分配空间 if (ptr) { ptr->name = "Bob"; ptr->age = 25; // ... } free(ptr); // 释放内存 ``` 5. 结构体数组和链表: 结构体不仅可以单个存在,还可以作为数组元素或构成链表节点。比如: ```c struct Person { char name[50]; int age; }; struct Person students[3]; // 结构体数组 students[0].name = "Charlie"; students[1].age = 19; // 或者用于链表节点 typedef struct Node { struct Node* next; struct NameAndAge data; } ListNode; ListNode* head = NULL; // 链表头指针 ``` 6. 结构体嵌套: 一个结构体可以嵌套另一个结构体,形成复合数据类型,提供更复杂的逻辑结构: ```c struct Address { char street[50]; int zipCode; }; struct Employee { char name[50]; int id; struct Address homeAddress; struct Address officeAddress; }; ``` 7. 结构体大小计算: 结构体的实际大小是所有成员大小之和,加上可能的填充字节。可以通过`sizeof()`操作符获取结构体的大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值