C语言速成之结构体

那么本篇文章给大家带来的是结构体的内容

 首先,我再次声明,本篇文章是速成系列,只会讲一些比较重要的部分,详细 部分请看我的其他文章

结构体定义的语法格式

struct   结构体名

{

   成员变量

}

举个例子

struct   hanfei

{

    string   name;

    int   age;

    string   sex;

}hf ;

当然啦,这只是给大家举个例子用的,千万别学哈

给结构体起别名

struct   结构体名

{

   成员变量

}

例子

struct   hf

{

    string   name;

    int   age;

    string   sex;

};

结构体的初始化

格式1:struct   结构体名    结构体名 = {成员变量初始的数据};

(struct 结构体名)----->这个可以看作是一个类型,这样便于理解,当然后面有好多需要这样理解的

格式2:struct   结构体名    结构体名 = {  .成员变量名 = 初始数据};

将结构体的别名变成一个结构体类型

格式:

typedef   struct    结构体名

struct   结构体名

{

   成员变量;

}结构体缩名;

那么之后就可以使用结构体缩名作为类型使用了

例子:

typedef    struct   hanfei

{

    string   name;

    int   age;

    string   sex;

}hf;

那么这个hf就可以作为类型使用了

这是之前的初阶数据结构链表的例子

结构体传参

struct hf

{

  string   name;

    int   age;

    string   sex;

};

void   Print1(f)

{
    printf("%s", f. name);

}

void   Print2(*ps)

{
  printf("%d", ps->age);

}

int main()

{
   struct hf  f1 = { "hanfei",  20, "man"};

   Print1(f1);//传结构体

   Print2(&f1);//传地址

}

小总结:传的是结构体(非指针)------------------》使用点进行调用

               传的是地址(指针接收)------------------》使用->进行调用

对齐数的计算

1. 结构体的第⼀个成员对⻬到和结构体变量起始位置偏移量为0的地址处

2.其他成员变量要对⻬到某个数字(对⻬数)的整数倍的地址处。 

   对⻬数=编译器默认的⼀个对⻬数与该成员变量⼤⼩的较⼩值

3. 结构体总⼤⼩为最⼤对⻬数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的 整数倍

联合体

概念:像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。

特点:

1. 所有成员共用一块内存空间,因此也叫共用体,且编译器只为最⼤的成员分配⾜够的内存空间。

2. 给联合体其中⼀个成员赋值,其他成员的值也跟着变化。

例子

struct gift_list

{

// 公共属性

int stock_number;// 库存量

double price; // 定价

int item_type;// 商品类型 // 特殊属性

char title[20];// 书名

char author[20];// 作者

int num_pages;// ⻚数

char design[30];// 设计

int colors;// 颜⾊

int sizes;// 尺⼨

};

枚举

概念:一一列举

如:星期一星期二星期三星期四星期五星期六星期日

枚举的优点:

1. 增加代码的可读性和可维护性

2. 和#define定义的标识符⽐较枚举有类型检查,更加严谨。

3. 便于调试,预处理阶段会删除 #define 定义的符号

4. 使⽤⽅便,⼀次可以定义多个常量

5. 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤

例子:

enum Color// 颜⾊

{

RED=1, GREEN=2, BLUE=4

};

enum Color clr = GREEN;

那么这篇文章的内容就先到这里,我们下期见

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值