3.3 typedef__第3章 数据 《C和指针》

前言:工作3年矣,是时候总结归纳3年来所思所想,构建自己的知识体系,形成编程思想了,基础与应用之间的知识通道需要打通,那就开始吧。

《C和指针》

第三章 3.3节 typedef

1. C语言支持typedef机制;

2. typedef用于为各种数据类型定义新名字;

3. typedef声明类型可以减少使声明又臭又长的危险;

4. 使用typedef而不是#define来创建新的类型名,因为后者无法正确处理指针类型。

代码规范总结:

在工作过程中,引入tcp/ip协议栈,文件系统,往往在引入这些外部库和模块的同时,会引入新的数据类型定义,导致一个工程中,有时候会存在5,6种完全不同的命名方式的基本数据类型,这是非常不可取的,给代码维护及开发带来了许多不便,因此提出如下建议:

1.引入的库或者模块,无论开发或者维护,维持原有基本数据类型不变;

2.新开发模块,基于统一且唯一的基本数据类型开发;

3.基于外部库及模块的开发,使用同一且唯一的基本数据类型开发。

使用经验总结:

在Linux存储管理中,有如下代码

typedef struct { unsigned long pte_low; } pte_t;

#define pte_val(x) ((x).pte_low)

如此使用,的确很好,使用了面向对象的编程手法,带来了如下好处:

1. 如果代码使用如下实现方式会如何?

#define unsigned long pte_t;

这样会导致一个问题

unsigned long new_pte;

pte_t new = new_pte;    //编译器不会报错,这就是隐患

时间: 2024-10-29 03:44:47

3.3 typedef__第3章 数据 《C和指针》的相关文章

语法》第九章 数据类型转换

第二部分  语法 ************第九章 数据类型转换 *************** JavaScript 是一种动态类型语言,变量没有类型限制,可以随时赋予任意值. 虽然变量没有类型,但是数据本身和各种运算符对运算子是有类型要求的.如果运算符发现,数据的类型与预期不符,就会自动转换类型.比如,减法运算符预期两侧的运算子应该是数值,如果不是,就会自动将它们转为数值. JS有一套数据类型自动转换的规则 一.强制转换 强制转换主要指使用Number.String和Boolean三个构造函数

深入浅出Zabbix 3.0 -- 第九章 数据可视化

第九章 数据可视化 Zabbix是一个非常灵活.强大的监控系统,它不仅能够监控大量不同类型的数据指标,并为这些数据及数据之间的关联提供了多种可视化工具,通过图形.展示屏.网络拓扑图等将数据直观的展现出来,实时的浏览和查看监控设备的状态. 9.1 图形 Zabbix 3.0中支持三种graphs(图形),即simple graphs(简单图形).ad-hocgraphs(自组图形)和customgraphs(自定义图形). 9.1.1 简单图形 简单图形是Zabbix系统内置的一种方法,为监控项数

第6章 数据存储全方案,详解持久化技术

第6章 数据存储全方案,详解持久化技术 所有的App都可以说是与数据打交道的,离开数据它们什么都不是.那么平时我们怎么存储一些关键的数据呢? 1 持久化技术简介 数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则是提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换. Android系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件

Java 线程第三版 第三章数据同步 读书笔记

多线程间共享数据问题 一.Synchronized关键字 atomic一词与"原子"无关,它曾经被认为是物质的最小的单元,不能再被拆解成更小的部分. 当一个方法被声明成synchronized,要执行此方法的thread必须先取得一个token,我们将它称为锁.一旦该方法取得(或者说是获得)锁,它将运行此方法然后释放掉(或者返回)此锁.不管方法时怎样返回的(包括通过异常)该锁会被释放. 二.Volatile关键字 如果变量被标示为volatile,每次使用该变量时都必须从主寄存器中读出

mySQL教程 第4章 数据查询

第4章 数据查询 mySQL运算符 这些运算符在SQL查询中用得到. 算数运算符 + 加 - 减 * 乘 / DIV 除 % MOD 取余数 比较运算符 = 等于 <> != 不等于 < <= > >= Between 指定范围 In 存在于集合 Is null 为NULL Is not null 不为空 Like 通配符 Regexp rlike 正则表达式 比如 比较运算符,返回的结果 真为1,假为0 运算符优先级 最高-----------------------

第二章 数据,变量和计算

头文件 #include <>或#include "" <> 强制类型转换 double a=1.6; cout<<static_cast<int>(a)<<endl; 输出为1 注意旧的强制类型转换为int(a),这比新的更容易出错,得不到想要的结果,所以推荐static_cast<转换成的类型>() 自动判断数据类型 auto n=16; 自动判断n的类型为int const auto e=1.1; 自动判断静

C和指针 (pointers on C)——第三章——数据

第三章 数据 本章是非常重要的,在特定范围内使用.链接属性.存储类型.const.extern和statickeyword使用.几乎所有的公司是C++在采访的第一个问题. 总结: 具有external链接属性(包含external.internal.None)的实体在其它语言的术语里称为全局实体(global),全部cpp里的函数都能够訪问它. 仅仅要声明的时候在函数体或代码块外部(包含main函数).默认的链接属性都是external. 假设声明的在代码块内部,说明它引用的是一个全局变量. 具

Android学习笔记—第七章 数据解析及读取

第七章 数据解析及读取 网络传输中数据的组织方式:xml.json.http (1)xml:可扩展标记语言 特点:保存少量数据,可跨平台 解析方式:sax.dom.pull a. sax解析: 特点:速度快,占用内存少.事件驱动,不会一次性把所有内容加载到内存中. startElement:元素节点开始 localName:不带前缀的标签名 qName:带前缀的标签名 attributes:节点内的属性和值 <student id ="1"> <name>小明&

系统分析员考试复习笔记-4:第四章 数据通讯与计算机网络

 1.      第四章数据通讯与计算机网络(P143) 计算机网络源于计算机技术与数据通讯技术的结合,它通过网络链路将分布在各个地理位置的多台独立的计算机相互连接起来,从而形成一种网络,并在网络操作系统.网络管理软件和网络通讯协议的管理和协调下,实现资源(硬件.软件和数据)共享. 1.1.      数据通讯基础知识 1.1.1.     信道特性 各种数据终端设备交换数据,必然要传输数据(模拟信号或者数字信号),数据传输的路径称为信道.信道可以分为物理信道和逻辑信道.物理信道由传输介质和