随笔 - 1  文章 - 0  评论 - 0  阅读 - 491

介绍C语言中的关键字 typedef 的用法

概述

typedef作用是为一种数据类型定义一个新的名字(包括数据类型int、char等+自定义的数据类型struct等)。

typedef作为一个存储类的关键字,不能与auto、extern、static、register等关键字出现在一个表达式中。

用法

变量声明表达式:新的类型名-替换-变量名,然后在开头加上typedef关键字

例子,

int a;  //传统变量声明表达式

int myint_t;  //使用新类型名myint_t替换a

typedef int myint_t;  //在语句开头加上typedef关键字,myint_t就是我们定义的新类型

例子,

void ( *pfunA )( int a );  //传统变量(函数)声明表达式

void (*PFUNA)(int a);  //使用新的类型名PFUNA替换变量名pfunA

typedef void(*PFUNA)(int a);  //在语句开头加上typedef关键字,PFUNA就是我们定义的新类型

typedef的作用

作用点1,

定义机器无关的类型。例如定义一个叫“REAL”的浮点类型,该浮点类型在目标机器上能够获得更高的精度。

typedef long double REAL;

如果在不支持long double的机器上运行相关代码,只需要修改对应的typedef语句,例如

typedef double REAL;  或者  typedef float REAL;

作用点2,

使用typedef为现有类型创建别名,给变量定义一个易于记忆且意义明确的新名字,例如

typedef unsigned int UINT;

作用点3,

使用typedef简化一些比较复杂的类型声明,例如

typedef void (*PFunCallBack)(char*pMsg, unsigner int nMsgLen);

注意:语句中类型名PFunCallBack与变量名pFunCallback的大小写区别。

。。。。

typedef与#define

两者的区别如下,

#define进行简单的字符串替换。#define宏定义可以使用#ifdef、#ifndef等来进行逻辑判断,还可以使用#undef来取消定义。

typedef是为一个类型起新的名字。typedef符合C语言范围规则,使用typedef定义的变量类型,其作用范围限制在所定义的函数或者文件内(取决于此变量定义的位置),而宏定义则没有这种特性。

通常,使用typedef比使用#define要好,特别是在有指针的场合里。

例子1,

typedef char* pStr1;

#define pStr2 char*

pStr1 s1,s2;

pStr2 s3,s4;

在上述的变量定义中,s1s2s3都被定义成char*类型,而s4被定义成char类型,是因为#define只是简单的进行了字符串替换,替换后的代码等同于, char* s3,s4;

而使用typedef为char*定义了新类型pStr1后,相关代码等同于,

char *s1,*s2;

例子2,

typedef char * pStr;

char string[5]="test";

const char *p1=string;

const pStr p2=string;

p1++;

p2++;

在编译过程中报错如下,

。。。

所以,const pStr p2的含义是:限定数据类型为char* 的变量p2 为只读,因此p2++错误。

 

posted on   天山飞球  阅读(491)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示