C语言笔记系列——结构体

    “结构体”是一种构造类型,由若干成员组成。每一个成员可以是基本数据类型,也可以仍是一个构造类型。C语言本身没有这种数据类型,因此在使用之前需要先自己定义。

结构体类型的定义

结构体类型定义的一般形式:

struct 结构体名
{
    类型标识符 成员名1;
    类型标识符 成员名2;
    ...
    类型标识符 成员名n;
};

举例:

struct date    /* 定义表示日期的结构体类型 */
{
    int year;
    int month;
    int day;
};
struct student  /* 定义一个学生结构体,用于描述学生的学号,姓名,性别,出生年月和成绩 */
{
    int num;
    char name[20];
    char sex;
    struct date birthday;   /* birthday是struct date类型 */
    float score;
};

结构体变量的定义与初始化

定义结构体类型的变量有三种方法:

1.先定义结构体类型,再定义该类型变量。这种方法在定义好类型后,可以随时定义更多的变量,比较灵活。

struct student              /* 定义一个学生结构体,用于描述学生的学号,姓名,性别,出生年月和成绩 */
{
    int num;
    char name[20];
    char sex;
    struct date birthday;   /* birthday是struct date类型 */
    float score;
};
struct student stu1,stu2;

2.在定义结构体类型的同时定义结构体变量。这种方法在编写短小程序时比较方便。

struct student              /* 定义一个学生结构体,用于描述学生的学号,姓名,性别,出生年月和成绩 */
{
    int num;
    char name[20];
    char sex;
    struct date birthday;   /* birthday是struct date类型 */
    float score;
}stu1,stu2;

3.直接定义结构体变量。这种方法不推荐使用。

struct
{
    int num;
    char name[20];
    char sex;
    struct date birthday;   /* birthday是struct date类型 */
    float score;
}stu1,stu2;

结构体类型变量在定义时可以直接初始化。(三种定义方法都可直接初始化)

初始化的一般方法:

struct 结构体名
{
    结构体成员列表;
}结构体变量={初始数据表};

注: 初始化时,不一定所有的成员都赋值,可以初始化部分成员。初始化数据之间要用“,”隔开,不进行初始化的成员项也要用“,”跳过。初始数据必须与其对应成员的数据类型相一致。

结构体变量的引用

表示结构体成员的一般形式:

结构体变量名.成员名

挡结构体类型中嵌套另一个结构体类型时,使用逐级访问的方法访问成员

例如:

stu1.score
stu1.birthday.year  /* 逐级访问 */

例子:

#include <stdio.h>
void main()
{
struct student              
{
    int num;
    char name[20];
    char sex;
    int age;
    }stu={8001,"Zhang san",'m',18};
    printf("Number=%d\nName=%s\n",stu.num,stu.name);
    printf("Sex=%c\nAge=%d\n",stu.sex,stu.age);
}

程序运行结果:

Number=8001
Name=Zhang san
Sex=m
Age=18



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值