C语言结构体变量——struct

C语言结构体变量——struct当我们有大量且类型不同的数据需要描述的时候,如果针对每个数据都去定义一个变量或数组,是很消耗时间和内存的,那么如何跟方便的存储大量不同类型的数据呢,这就需要用到结构体变量了结构体变量——str

当我们有大量且类型不同的数据需要描述的时候,如果针对每个数据都去定义一个变量或数组,是很消耗时间和内存的,那么如何跟方便的存储大量不同类型的数据呢,这就需要用到结构体变量了

结构体变量——struct是一种构造类型

构造类型:不是基本类型的数据结构也不是指针,它是由若干个相同或不同类型的数据构成的集合。

结构体概念:结构体是一种构造类型的数据结构,是一种或多种基本类型或构造类型的数据的集合

1.结构体类型的定义

结构体类型的定义方法:在使用结构体之前必须先有类型,然后用类型定义数据结构,这个类型相当于一个模具

定义结构体类型的方式如下:

struct 结构体类型名

{

    成员列表

};

 2.定义结构体变量

 如果我们要定义结构体变量,可以在分号前面定义,下面举个详细的例子

 假如我们要记录三名学生的年龄,姓名和性别,我们可以这样定义结构体类型和结构体变量

有了结构体类型之后,就可以用类型定义变量了

一般结构体类型都会定义在全局,也就是main函数的外面,所以在定义结构体类型的同时定义变量,这些变量一般都是全局变量,定义完类型之后定义的结构体变量内存分配要看定义的位置

struct stu ;
{   //定义了三个struct stu类型的变量
    //每个变量都有三个成员,分别是num,name,sex
    int num;
    char name[20];  
    char sex;
} lucy,bob,lilie; //结构体变量,分别是lucy,bob,lilie

在定义结构体类型的时候顺便定义结构体变量,以后还可以定义结构体变量struct结构体类型名

struct结构体类型名

{

    成员列表;

}结构体变量1,变量2;

struct结构体类型名 变量3,变量4;
 

注意:一般结构体类型都会定义在全局,也就是main函数的外部,所以在定义结构体类型的同时定义变量,这些变量一般都是全局变量,

定义完类型之后定义的结构体变量内存分配要看定义的位置

 3.无名结构体类型的定义和typedef定义

在定义结构体类型的时候,没有结构体类型名,我们可以顺便定义结构体变量,但是
因为没有类型名,所以之后就不能再定义相关类型的数据了

struct

{

    成员列表;

}变量1,变量2;

使用typedef给结构体变量取别名

通常将一个结构体类型重新起个类型名,用新的类型名替代原先的类型

typedef struct 结构体名      //这里的结构体名是可以省略的

{

   成员列表;

}重新定义的结构体类型名;

注意:typedef主要用于给一个类型取别名,此时相当于给当前结构体重新起来一个类型名,相当于struct结构体名

4.结构体变量的初始化及使用

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

1.结构体变量的定义和初始化

2.在定义结构体变量之前首先得有结构体类型,然后在定义变量

3.在定义结构体变量的时候,可以顺便给结构体变量赋初值,被称为结构体的初始化

4.结构体变量初始化的时候,各个成员按顺序初始化

struct stu
{
    int id;
    char name[20];
    char sex;
    char age;
}zhangsan,lisi = {1002,“李四”,’B’,25};
int main()
{
    struct stu wangwu;
    //结构体变量的初始化
    struct stu zhaoliu = {1001,“赵六”,‘B’,20};
    return 0;
}

 使用typedef对结构体成员取别名并初始化

使用typedef对结构体变量取别名
typedef struct
{
    int a;
    int b;
    char c;
}MSG;  //使用了typedef就不能同时定义结构体变量了
int main()
{
      MSG message1,message2 = {100,200,’a’};
     //使用了typedef在定义结构体变量的时候不用加struct
}

 结构体变量的使用

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

结构体变量.结构体成员  注意中间是一个.操作符

struct stu
{
    int id;
    char name[20];
    char sex;
    char age;
}zhangsan,lisi = {1002,“李四”,’B’,25}
int main()
{
    struct stu wangwu;
    struct stu zhaoliu = {1001,“赵六”,‘B’,20};
    //结构体变量的使用
    zhangsan.id = 1001;
    strcpy(zhangsan.name,”zhangsan”);//这里不能直接进行赋值
    zhangsan.sex = ‘B’;
    zhangsan.age = 18;

    printf(“%d-%s-%c-%d\n”,zhangsan.id,zhangsan.name,zhangsan.sex,zhangsan.age);
    //使用“.”操作符访问对结构体成员进行访问
    printf(“%d-%s-%c-%d\n”,lisi.id,lisi.name,lisi.sex,lisi.age);

    return 0;
}

5.在结构体中嵌套结构体

typedef struct
{
    int year;
    int month;
    int birthday;
}BD;
typedef struct
{
   int id;
   char name[32];
   BD birthday;
}stu;
int main()
{
    stu xiaomin;
    xiaoming.id = 1001;
    strcpy(xiaomign.name = “小明”);
    //如果要对嵌套的结构体赋值,就要找到最内层的成员再赋值
    xiaoming.birthday.year = 2002;
    xiaoming.birthday.month = 12;
    xiaoming.birthday.day = 20;
    printf(“%d-%s-%d:%d:5d\n”,xiaoming.id,xiaoming.name,\
    xiaoming.birthday.year,xiaoming.birthday.month,\  xiaomiang.birthday.day);
    //嵌套结构体的定义并初始化
    stu xiaoli = {1002,”xiaoli”,2000,1,1};
}

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

注意:必须是相同类型的结构体变量,才能相互赋值
struct stu
{
    int id;
    char name[32];
    char sex;
    int age;
};
int main()
{
     struct stu zhangsan;
     zhangsan.id = 1001;
     strcpy(zhangsan.name,”zhangsan”);//这里不能直接进行赋值
     zhangsan.sex = ‘B’;
     zhangsan.age = 18;
     struct stu lisi;
     lisi = zhangsan;
    return 0;
}

写到这里,相必大家也对结构体有了初步的了解

除了有这种简单的结构体,后面我还会讲到结构体数组、结构体指针等比较复杂的东西

大家一起加油啊,如果有讲的不好的地方,请大家指正

C语言结构体变量——struct

 

今天的文章C语言结构体变量——struct分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/72867.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注