用户自定义结构体(1)

我们常用数据类型有 int、char、double、float等等!但是有时候我们再做课程设计的时候,常常会有一大堆的用户数据,比如一个学生的数据有:学号,姓名,年龄,性别,出生日期,以及一大堆数据需要输入,如果我们在函数内一个一个定义的话,代码就会显得很乱,不方便后期对代码的修改!我们可以简单的举一个例子:
#include <stdio.h>
int main()
{
    int num; ///学号
    char name[20];        //名字
    char sex;              //性别
    int age;              //年龄
    int year;            //出生年
    int mouth;           //出生月
    int day;               //出生日

   return 0;
}

这样一长串代码在后期赋值调用中十分的不方便,此时我就可在函数写一个用户自定义结构体、其中其中用户自定义结构体定义方法有:

struct student
    {
     int num; ///学号
    char name[20];        //名字
    char sex;              //性别
    int age;              //年龄
    int year;            //出生年
    int mouth;           //出生月
    int day;               //出生日
};

其中student为数据类型

typedef struct 
    {
    int num; ///学号
    char name[20];        //名字
    char sex;              //性别
    int age;              //年龄
    int year;            //出生年
    int mouth;           //出生月
    int day;               //出生日
}student;

而这个定义的方法中在struct 前添加了个typedef 表示这个类型的重命名,命名为student;此时我还要注意下列这种定义:

struct 
{
         int num; ///学号
        char name[20];        //名字
        char sex;              //性别
        int age;              //年龄
        int year;            //出生年
        int mouth;           //出生月
        int day;               //出生日
}student1;

此时student1就不是数据类型了,而是以个变量(重点强调是变量),当我们想在函数体内再声明一个和student1一模一样的变量时,这是做不到的,因为该结构体没有给出结构体名称,我们是无法调用该类型名来声明变量。

接下来可以声明student类型的变量,例如student    stu1;这时候我们就可以对stu1变量进行赋值,赋值的方法如下

{
    struct student stu1 = {1001,"孙昊",'M',12,2000,6,23};    //此赋值的顺序是依照结构体内部顺序来赋值的
}

也可以进行如下声明:

{
    struct student stu1;
    stu1.num = 1001;
    stu1.name = "孙昊";
    stu1.sex = 'M';
    stu1.age = 12;
    stu1.year = 2000;
    stu1.mouth = 6;
    stu1.day = 23;

}

当我们声明一个指针变量时,赋值的方式也有所不同:

{
        struct student *stu;
        stu->num = 1001;
        stu->name = "孙昊";
        stu->sex = 'M';
        stu->age = 12;
        stu->year = 2000;
        stu->mouth = 6;
        stu->day = 23;
}

由此我们可以看出(*stu).num  与  stu->num等价;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值