【C语言】结构体快速学习

结构体

1. 结构体定义

struct teacher{
    char name[20];
    int age;
    char email[50];
};

2. 声明结构体变量

struct teacher teacher1; 
  • 另一种方式:定义时声明结构体变量
struct teacher{
    char name[20];
    int age;
    char email[50];
}teacher1, teacher2, teacher3, *teacher4;

3. 初始化结构体变量

  • 声明时初始化
struct teacher teacher1 = {"Zhangshan", 18, "zhangshan@gamil.com"};
  • 定义结构体、声明结构体变量时初始化
struct teacher{
    char name[20];
    int age;
    char email[50];
}teacher1 = {"Zhangshan", 18, "zhangshan@gamil.com"};

4. 访问结构体成员

  • 操作符.
  • 操作符->适用于指向结构体的指针
#include <stdio.h>
#include <conio.h>

struct teacher {
    char name[20];
    int age;
    char email[50];
};

int main() {
    struct teacher teacher1 = { "Zhangshan", 18, "zhangshan@gamil.com" };
    struct teacher* teacher2 = &teacher1;
    printf("name: %s\nage: %d\nemail:%s\n", teacher1.name, teacher1.age, teacher1.email);
    printf("name: %s\nage: %d\nemail:%s\n", teacher2->name, teacher2->age, teacher2->email);
    return 0;
}

5. 结构体变量赋值

可以使用赋值操作符=将结构体A赋值给结构体B.

teacher3 = teacher1;

6. 结构体嵌套

结构体的数据成员也是结构体。

struct student{
    char name[20];
    struct ScoreStruct{
        int math;
        int English;
    }score;
    struct InfoStruct{
        float height;
        float weight;
    }info;
};
  • 更好理解
struct ScoreStruct{
        int math;
        int English;
};
struct InfoStruct{
        float height;
        float weight;
};
struct student{
    char name[20];
    ScoreStruct score;
    InfoStruct info;
};

说明
结构体A中定义结构体B,则在结构体A外是不可见的,即:只能在A中声明B的结构体变量。

struct student {
    char name[20];
    struct ScoreStruct {
        int math;
        int English;
    };
    struct InfoStruct {
        float height;
        float weight;
    };
};

和下边的代码等价

struct student {
    char name[20];
    int math;
    int English;
    float height;
    float weight;
};

7. 匿名结构体

不指定结构体名称,但是需要至少声明一个结构体变量。
可直接访问(person1.name),但是以后的程序中不能声明这种类型的变量。

struct{
    char name[20];
    int age;
}person1, person2;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值