自定义类型之:结构体,枚举,联合

本文详细介绍了C语言中的结构体、枚举和联合。结构体是聚合类型,其成员变量可以是不同类型,访问成员通过点运算符,内存对齐规则影响结构体大小。枚举列出可能的取值,优点在于增强代码可读性。联合体的成员共用同一块内存空间,其大小至少为最大成员的大小,可用于大小端判断。
摘要由CSDN通过智能技术生成

1.结构体:

>结构体的类型和声明:结构体是一种聚合类型,在C语言中结构体不能为空。

结构体的声明:结构体是一些值的集合,这些值称为成员变量。成员变量可以是不同的值。

struct tag
{    // 结构体名tag见名只意,可以省略,但不建议省略
   int a;     //结构体成员变量:可以是任何类型
   cha c;
}list;  //分号不能省略

结构体之间不能相互赋值:

struct {int a;char c;}x;
struct {int a;char c;}*p;

则p=&x;是错误的。

结构体的不完整声明:

struct A
{
    int a;
    struct B*next
};
struct B
{
    int a;
    struct A*next
};

这种方法可行,不过建议再A中使用结构体是声明一下:

struct B;
struct A
{
    int a;
    struct B*next
};
struct B
{
    int a;
    struct A*next
};

>结构体访问:

结构体变量 访问成员变量时通过(.)来访问的。

struct stu
{
    int a;
    char name[];
};
struct stu s;
s.a=20;

结构体指向变量的成员有时候我们得到的不是一个结构体变量,而是指向结构体的指针,那么访问成员如下。

struct stu
{
    int a;
    char name[];
}s;
void print(struct stu *p)
{
    printf("a=%d,name=%s\n",(*p).a,(*p).name);
    printf("a=%d,name=%s\n",p->a,p>name);
}

>结构体的自引用:结构体中可以包含一个为该类型本身的成员变量。

struct stu
{
    int a;
    struct stu *next
};
typedef struct stu     //typedef对当前结构体重命名
{
    int a;
    struct stu1 *next
}stu1;

>结构体变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值