12.typedef的使用与结构体定义 您所在的位置:网站首页 结构体typeof 12.typedef的使用与结构体定义

12.typedef的使用与结构体定义

2023-03-08 02:01| 来源: 网络整理| 查看: 265

欢迎访问个人网络日志🌹🌹知行空间🌹🌹

文章目录 1.基础介绍2.typedef 的常用的几种情况3.使用typedef可能出现的问题参考资料

1.基础介绍

typedef是C/C++语言中保留的关键字,用来定义一种数据类型的别名。

typedef并没有创建新的类型,只是指定了一个类型的别名而已。

typedef定义的类型的作用域只在该语句的作用域之内, 也就是说如果typedef定义在一个函数体内,那么它的作用域就是这个函数。如果typedef定义在一个命名空间中,则其作用域只在当前命名空间中。

使用 typedef 关键字可以用来定义自己习惯的数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的结构型名称、共用型名称、枚举型名称等。

2.typedef 的常用的几种情况 给基本数据类型定义别名 // 1 typedef doule REAL; // 2 typedef float REAL;

定义数据类型REAL,在不同平台上通用的代码,如需改动,只需要修改typedef语句即可。

为复杂类型定义别名,简化代码 typedef int *(*pFun)(int, int); // 定义函数指针 int *add(int x, int y) { int *p = new int; *p = x + y; return p; } pFun fp[1]; // 定义函数指针数组 fp[0] = add; std::cout int x; int y; Point_(int a, int b) : x(a), y(b) {}; } Point; // 使用 Point p;

在C++中已经不是必须的了,struct定义的类型,可直接通过类型名使用。

3.使用typedef可能出现的问题 1.歧义 typedef char* PCHAR; int strcmp(const PCHAR,const PCHAR);

在这里,const PCHAR与const char*不同,const PCHAR中指针是常量,const char*中,char是常量

// constant pointer to constant char const char * const // constant pointer to char char * const // pointer to constant char const char * 2.重复的存储类关键字

虽然 typedef 并不真正影响对象的存储特性,但在语法上它还是一个存储类的关键字,就像 auto、extern、static 和 register 等关键字一样。因此,像下面这种声明方式是不可行的:

typedef static int INT_STATIC;

上面,static与typedef关键字重复了。

欢迎访问个人网络日志🌹🌹知行空间🌹🌹

参考资料 1.https://stackoverflow.com/questions/612328/difference-between-struct-and-typedef-struct-in-c2.https://www.tutorialspoint.com/difference-between-const-char-p-char-const-p-and-const-char-const-p-in-c#:~:text=char*%20const%20says%20that%20the,cannot%20point%20to%20another%20char.3.http://c.biancheng.net/view/298.html


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有