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;

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

相关推荐

  1. C语言结构

    2024-07-21 20:22:03       39 阅读
  2. c语言-结构

    2024-07-21 20:22:03       60 阅读
  3. 结构(C语言)

    2024-07-21 20:22:03       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 20:22:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 20:22:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 20:22:03       45 阅读
  4. Python语言-面向对象

    2024-07-21 20:22:03       55 阅读

热门阅读

  1. npm小记

    2024-07-21 20:22:03       16 阅读
  2. 【busybox记录】【shell指令】df

    2024-07-21 20:22:03       20 阅读
  3. C语言之封装,继承,多态

    2024-07-21 20:22:03       23 阅读
  4. 【广告&推荐】首选积分墙:试玩星shiwanxing.com

    2024-07-21 20:22:03       18 阅读
  5. 大模型的短期记忆和长期记忆各自的使用场景

    2024-07-21 20:22:03       20 阅读
  6. 深入探索Flutter中的状态管理:使用Provider库

    2024-07-21 20:22:03       17 阅读
  7. 认识一下哈希函数

    2024-07-21 20:22:03       19 阅读
  8. 在 CentOS-Stream-9 中使用 network 代替 NetworkManager

    2024-07-21 20:22:03       16 阅读
  9. 目标检测算法

    2024-07-21 20:22:03       20 阅读
  10. 在澳大利亚留学,论文应该怎么写?

    2024-07-21 20:22:03       19 阅读