15、C语言用户自定义数据类型

本文详细介绍了C语言中的用户自定义数据类型,包括结构体、共用体、枚举类型以及typedef声明新类型名。结构体允许自定义复合数据类型,可以部分初始化并互相赋值;共用体在同一内存区域存储不同类型的变量,但同一时刻只能有一个有效;枚举类型限制变量只能取预设的值;typedef则用于创建新的类型别名,简化类型声明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言用户自定义数据类型

一、结构体

定义语法:

struct [名称]

{

成员列表;

}[变量列表];

示例程序:

#include 

#include 

struct Student

{

    int age;

    char *name;

    char sex;

} Davlid={24,"Davlid",'M'};

struct

{

    int age;

    char name[20];

} Tom;

int main()

{

    struct Student Mike={1,"MIKE"};//初始化

    struct Student Rubin={.age=10};

    return 0;

}


可部分初始化。

同类的结构体可互相赋值如:Mike=Rubin;

结构体指针及成员引用。不可以取结构成内部成员的地址。也就是说不可以指向内部

成员变量。

    struct Student *p;

    p->age;

    Mike.age;

    return 0;

结构体变量属于值类型,当作参数时属于值传递,结构体指针属于址类型

当作参数是属于址传递。

二、共用体

用同一段内存,存放不同类型的变量,共用体所占内存是内部等于内部占字节数

最大的一个变量所占的字节。且任何一个时刻,内存中的这段单元只能存放一个

有效的变量内容。

语法:

union Test

{

    int age;

    char sex;

    float soloar;

 

};

    union Test test001;

    test001.sex='M';

    printf("%c\n",test001.sex);

    test001.age=10;

    printf("%d\n",test001.age);//引用成员,这样才知道应该取多少字节的数据。

    return 0;输出:

M

10

其它使用和初始化方式类似结构体。

三、枚举类型

定义一个变量只能取指定的值。

语法:

enum [枚举名称]

{

元素列表;

}[变量列表];

如:

enum Weekday

{

sun,mon,tue,wed,thu,fri,sat

};

元素默认从0开始,往上自动加1 ,也可指定指定值。

#include 

#include 

enum Weekday

{

sun,mon,tue,wed,thu,fri,sat

};

int main()

{

    enum Weekday week;

    week=sun;

    printf("%d\n",week);

    return 0;

}

输出:

0

四、用typedef声明新类型名

按定义变量的方式,把变量名换成新类型名,再在最前面加上typedef,就声明了新类型

以后就可以使用该类型名称,声明这个类型的变量了。

如:

typedef int num[100];

num a; 相当于int a[100];

typedef int Integer;

Integer a;相当于 int a;

typedef int Num[4];

int main()

{

    Num a={1,2,3,4};

    return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值