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

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;

}


你可能感兴趣的:(C)