【C++知识点】用 typedef 定义类型

简介: 【C++知识点】用 typedef 定义类型

用 typedef 定义类型

typedef是C/C++中一个很关键的关键字,它的作用是用来给类型起别名。因为在遇上不同数据类型,尤其是复杂类型。

typedef关键字常用来给一下几种类型起别名:

  1. 基本数据类型
  2. 结构体
  3. 数组
  4. 枚举类型
  5. 指针

基本数据类型

使用typedef给基本数据类型起别名很简单:

//typedef关键字 数据类型 别名
typedef int Myint;
typedef double Mydouble;

起了别名以后,别名就相当于原类型名的同义词,能使用原类型的地方就可以使用别名。

int num和Myint num等价。

结构体

和基本数据类型类似,将别名放在结构体之后。

struct Person{
    string name; 
    int age;
};
//typedef关键字 结构体 别名
typedef struct Person P;

数组

给数组起别名时,typedef的用法和单个元素有些区别,别名被挤在数组元素类型和数组元素个数之间。

//typedef关键字 数组元素类型 别名[数组元素个数]
typedef int C[10];
C t;
// t的类型是int[10],也就是包含10个int类型的数组

枚举类型

和结构体类型类似。

enum Color{Red,Green,Blue};
//typedef关键字 枚举类型 别名
typedef Color primaryColor;
primaryColor G = Red

指针

对指针起别名需要注意的一点就是,如果要对别名加const关键字,必须要知道,我们声明的是一个常量指针,而不能将其按照字面上,理解为指向常量的指针。


//typedef关键字 指针 别名
typedef const char* String;
String s1 = "name";
目录
相关文章
|
15天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
42 4
|
1月前
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
30 2
|
1月前
|
C++
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
54 1
|
1月前
|
存储 编译器 程序员
C++类型参数化
【10月更文挑战第1天】在 C++ 中,模板是实现类型参数化的主要工具,用于编写能处理多种数据类型的代码。模板分为函数模板和类模板。函数模板以 `template` 关键字定义,允许使用任意类型参数 `T`,并在调用时自动推导具体类型。类模板则定义泛型类,如动态数组,可在实例化时指定具体类型。模板还支持特化,为特定类型提供定制实现。模板在编译时实例化,需放置在头文件中以确保编译器可见。
33 11
|
2月前
|
C++
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
|
2月前
|
安全 程序员 C语言
C++(四)类型强转
本文详细介绍了C++中的四种类型强制转换:`static_cast`、`reinterpret_cast`、`const_cast`和`dynamic_cast`。每种转换都有其特定用途和适用场景,如`static_cast`用于相关类型间的显式转换,`reinterpret_cast`用于低层内存布局操作,`const_cast`用于添加或移除`const`限定符,而`dynamic_cast`则用于运行时的类型检查和转换。通过具体示例展示了如何正确使用这四种转换操作符,帮助开发者更好地理解和掌握C++中的类型转换机制。
|
3月前
|
C++
使用 QML 类型系统注册 C++ 类型
使用 QML 类型系统注册 C++ 类型
59 0
|
3月前
|
编译器 C++
【C/C++学习笔记】C++声明与定义以及头文件与源文件的用途
【C/C++学习笔记】C++声明与定义以及头文件与源文件的用途
48 0
|
3月前
|
存储 C++
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
43 0
|
3月前
|
JSON Android开发 数据格式
Android c++ core guideline checker 应用问题之JSON compilation database的定义如何解决
Android c++ core guideline checker 应用问题之JSON compilation database的定义如何解决