当前位置: 首页 > news >正文

C语言:给结构体取别名的4种方法

0 前言

在进行嵌入式开发的过程中,我们经常会见到typedef这个关键字,这个关键字的作用是给现有的类型取别名,在实际使用过程中往往是将一个复杂的类型名取一个简单的名字,便于我们的使用。就像我们给很熟的人取外号一样,就是便于我们的记忆和使用。

1 给结构体取别名的4种方法

1.1 定义结构体时取别名(1)

示例代码:

typedef struct
{int x;int y;
} test1_t;

结果:给结构体取别名为test1_t。
这种方法最简洁,但存在一个问题,如果我们定义的结构体是一个链表则无法定义一个本身结构体类型的指针。

1.2 定义结构体时取别名(2)

示例代码:

typedef struct t2
{int x;int y;
} test2_t;

结果:给结构体取别名为test2_t。
这种方法比上面那种略复杂,但可以定义一个本身结构体类型的指针。在结构体内定义本身结构体类型的指针的语句:struct t2 *x;

1.3 定义结构体完成后取别名(1)

struct t3
{int x;int y;
};
typedef struct t3 test3_t;

结果:给结构体struct t3取别名为test2_t。
这种方法写得更加臃肿一些,不过结构看起来更加明朗。

1.4 定义结构体完成后取别名(2)

struct t3
{int x;int y;
};
typedef struct t3 *test4_t;

结果:给struct t3取别名为*test4_t,相当于test4_t是struct t3型指针类型。
这种方法可以直接给结构体取一个指针别名类型,这样取别名后定义一个结构体指针变量语句为:test4_t x;

2 结果测试

将上述的操作方法放到一个源文件内,设置并打印结构体成员的值。测试代码如下:

#include "stdio.h"typedef struct
{int x;int y;
} test1_t;typedef struct t2
{int x;int y;
} test2_t;struct t3
{int x;int y;
};
typedef struct t3 test3_t;
typedef struct t3 *test4_t;int main(void)
{test1_t test1;test2_t test2;test3_t test3;test4_t test4 = &test3;test1.x = 1;test1.y = 2;test2.x = 1;test2.y = 2;test3.x = 1;test3.y = 2;printf("test 1 ==> x : %d, y : %d\r\n", test1.x, test1.y);printf("test 2 ==> x : %d, y : %d\r\n", test2.x, test2.y);printf("test 3 ==> x : %d, y : %d\r\n", test3.x, test3.y);printf("test 4 ==> x : %d, y : %d\r\n", test4->x, test4->y);return 0;
}

测试结果:
在这里插入图片描述

http://www.lryc.cn/news/325519.html

相关文章:

  • 今天聊聊Docker
  • 【C语言】结构体
  • Git基础(24):分支回退
  • 复试专业前沿问题问答合集1
  • C++标准库中提供的用于处理正则表达式的类std::regex
  • .NET Core 服务实现监控可观测性最佳实践
  • AI基础知识扫盲
  • 分布式系统面试全集通第一篇(dubbo+redis+zookeeper----分布式+CAP+BASE+分布式事务+分布式锁)
  • Prompt-RAG:在特定领域中应用的革新性无需向量嵌入的RAG技术
  • 线性代数 - 应该学啥 以及哪些可以交给计算机
  • 力扣面试150 Pow(x, n) 快速幂 负指数
  • 连接navicat报错2059 解决办法
  • Unity-UGUI系统
  • 配置AC和AP上报KPI指标信息实验
  • 深度学习Trick
  • c++顺序表(连续插入删除)
  • [综述笔记]A Survey on Deep Learning for Neuroimaging-Based Brain Disorder Analysis
  • 【C++练级之路】【Lv.16】红黑树(冰与火的碰撞,红与黑的史诗)
  • 政安晨:【Keras机器学习实践要点】(三)—— 编写组件与训练数据
  • 数据库系统概论(超详解!!!) 第四节 关系数据库标准语言SQL(Ⅲ)
  • 如何使用Python进行网络安全与密码学【第149篇—密码学】
  • 应急响应-Web2
  • 复试专业前沿问题问答合集8-1——CNN、Transformer、TensorFlow、GPT
  • 用Python做一个植物大战僵尸
  • Win11文件右键菜单栏完整显示教程
  • 【Python实用标准库】argparser使用教程
  • 伦敦金与纸黄金有什么区别?怎么选?
  • 化工企业能源在线监测管理系统,智能节能助力生产
  • C/C++ 一些使用网站收集...
  • 2024可以搜索夸克网盘的方法