首页 > 其他分享 >介绍C语言中的关键字 typedef 的用法

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

时间:2022-11-26 09:56:27浏览次数:29  
标签:typedef 定义 int C语言 char 关键字 类型 define

概述

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++错误。

 

标签:typedef,定义,int,C语言,char,关键字,类型,define
From: https://www.cnblogs.com/zhangzongliang/p/16926938.html

相关文章

  • MySQL数据查询关键字
    昨日内容回顾数据基础约束条件非空唯一无符号零填充主键的使用具有唯一性标识的字段即为主键,主键常采用自增的数字。数字的自增进程单独记录,不会因为数据的......
  • C语言实现最简单的2048存档读档功能(获取当前路径和文件IO)
    简介最近大一的学弟开始布置C语言的大作业了,于是在此提供一种比较简单的2048存档读档功能的实现1获取当前目录及存档文件记得自己大一的时候在这里研究了很久,在这里提......
  • C语言学习笔记---volatile关键字
    一段代码想要最终被计算机执行,首先需要被翻译成机器可识别和执行的指令,代码编译的过程往往包含几个步骤:代码->词法语法分析->语义分析->中间代码生成->目标代码生......
  • 表查询的关键字
    SQL语句查询关键字select:指定需要查询的字段信息select*查所有字段selectname:查name字段selectchar_length(name)支持对字段做处理from:指定需要查询的表信息......
  • 【大一C语言项目】Cjson的认识与实现(一)
    【大一C语言项目】Cjson的认识与实现(一)一、初识json参考网站​​​菜鸟教程:JSON​​​​JSON介绍​​​​JSON在线解析​​JSON是什么JSON指的是JavaScript对象表示法(Jav......
  • SQL语句查询关键字
    1.SQL语句查询关键字1.select:指定需要查找的字段信息,eg:select*,selectname。同时select也支持对字段做处理,eg:selectchar_length(name)。2.from:指定需要查询的......
  • SQL语句查询关键字
    今日内容概要SQL语句查询关键字selectfromwheregroupbyhavingdistinctorderbylimitregexp多表查询的两种方式子查询连表查询今日内容详细SQL......
  • MySQL查询关键字
    SQL语句查询关键字前期数据准备编写SQL语句的小技巧查询关键字之where筛选查询关键字之groupby分组查询关键字之having过滤查询关键字之distinct去重......
  • 【大一C语言项目】Cjson的认识与实现(二)
    【大一C语言项目】Cjson的认识与实现(二)参考资料:​​​哔哩哔哩CJson开源库使用及注意事项​​​​CJson开源项目下载地址​​​​cJSON源码刨析​​一、使用Cjson库下载CJSO......
  • 查询关键字
    SQL语句查询关键字数据准备createtableemp(idintprimarykeyauto_increment,namevarchar(20)notnull,genderenum('male','female')notnulldefault'ma......