【结构体变量的定义初始化及使用】

一、结构体变量的定义和初始化

结构体变量,是个变量,这个变量是若干个数据的集合。
注意:

  1. 在定义结构体变量之前首先得有结构体类型,然后在定义变量;
  2. 在定义结构体变量的时候,可以顺便给结构体变量赋初值,被称为结构体的初始化;
  3. 结构体变量初始化的时候,各个成员顺序初始化。
    e.g.
#include <stdio.h>


//定义结构体类型
struct stu{
    int id;
    char name[32];
    char sex;
    int age;
    //定义结构体变量之:定义结构体类型的同时定义结构体变量
}alice, lisa = {1101, "Lisa_Wolf", 'F', 30};

//使用typedef对结构体类型取别名
typedef struct{
    int a;
    int b;
    char c;
}MSG;


int main(int argc, char *argv[])
{
    //定义结构体变量之:类型定义完毕之后定义变量
    struct stu mary;
    //结构体变量的初始化
    struct stu Anna = {1001, "安娜",'F',20};
    
    //如果使用typedef对结构体类型取别名
    //就无法在定义类型的同时定义结构体变量
    //在定义结构体变量的时候不用加struct
    MSG msg1, msg2 = {100, 200, 'w'};
    
    return 0;
}

二、结构体变量的使用

结构体变量对成员调用的方式:

 结构体变量.结构体成员

注意:这地方说的结构体变量主要指的是普通结构体变量

结构体变量的简单使用

#include <stdio.h>
#include <string.h>


//定义结构体类型
struct stu{
    int id;
    char name[32];
    char sex;
    int age;
    //定义结构体变量之:定义结构体类型的同时定义结构体变量
}Alice, lisa = {1101, "Lisa_Wolf", 'F', 30};

//使用typedef对结构体类型取别名
typedef struct{
    int a;
    int b;
    char c;
}MSG;


int main(int argc, char *argv[])
{
    //定义结构体变量之:类型定义完毕之后定义变量
    struct stu Mary;
    //结构体变量的初始化
    struct stu Anna = {1001, "Anna Benz",'F',20};

    //如果使用typedef对结构体类型取别名
    //就无法在定义类型的同时定义结构体变量
    //在定义结构体变量的时候不用加struct
    MSG msg1, msg2 = {100, 200, 'w'};

    //结构体变量的使用
    Alice.id = 1001;
    strcpy(Alice.name, "Alice Granthm");
    Alice.sex = 'F';
    Alice.age = 20;

    printf("%d - %s - %c - %d\n", Alice.id, Alice.name, Alice.sex, Alice.age);

    printf("%d - %s - %c - %d\n", lisa.id, lisa.name, lisa.sex, lisa.age);

    printf("%d - %s - %c - %d\n", Mary.id, Mary.name, Mary.sex, Mary.age);

    printf("%d - %s - %c - %d\n", Anna.id, Anna.name, Anna.sex, Anna.age);

    printf("%d - %d - %c\n", msg2.a, msg2.b, msg2.c);

    return 0;
}

执行结果
struct

在结构体中嵌套结构体

#include <stdio.h>
#include <string.h>


//在结构体中嵌套结构体

typedef struct{
    int year;
    int month;
    int day;
}BD;

typedef struct{
    int id;
    char name[32];
    BD birthday;
}Student;

void test2()
{
    Student Anna;
    Anna.id = 1101;
    strcpy(Anna.name, "Anna Benz");
    //如果结构体中嵌套结构体,赋值时找到最内层的成员再进行赋值
    Anna.birthday.year = 2002;
    Anna.birthday.month = 02;
    Anna.birthday.day = 20;

    printf("%d - %s - %d-%d-%d\n", Anna.id, Anna.name, Anna.birthday.year,Anna.birthday.month, Anna.birthday.day);

    //嵌套的形式定义并初始化
    Student Alice =  {1002, "Alice Klarkson", 2000, 3, 16};
    printf("%d - %s - %d-%d-%d\n", Alice.id, Alice.name, Alice.birthday.year,Alice.birthday.month, Alice.birthday.day);

}

int main(int argc, char *argv[])
{
    test2();

    return 0;
}

执行结果
在这里插入图片描述

相同类型的结构体变量可以相互赋值

#include <stdio.h>
#include <string.h>


//在结构体中嵌套结构体

struct student{
    int id;
    char name[32];
    char sex;
    int age;
};

int main(int argc, char *argv[])
{
    struct student Mary;
    Mary.id = 1201;
    strcpy(Mary.name, "Mary Branson");
    Mary.sex = 'F';
    Mary.age = 18;
    printf("%d - %s - %c - %d\n",Mary.id, Mary.name, Mary.sex, Mary.age);

    //相同类型的结构体变量之间可以直接赋值
    struct student Lisa;
    Lisa = Mary;
    printf("%d - %s - %c - %d\n", Lisa.id, Lisa.name, Lisa.sex, Lisa.age + 1);

    return 0;
}

执行结果
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

六月悉茗

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

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

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

打赏作者

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

抵扣说明:

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

余额充值