数据类型的别名

Posted 12man

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型的别名相关的知识,希望对你有一定的参考价值。

  C/C++ 编程语言中,typedef 关键字用来为特定的数据类型取一个别名,或者将其称之为 “定义了一种新的数据类型”。无论如何,其最终的目的是为了使源代码更易于阅读和理解。它通常用于简化声明复杂的数据类型组成的结构 。

  比如,在 C 中没有 bool 类型,于是很可能出现一个程序员使用 int,一个程序员使用 short 的情况,会比较混乱。这时最好使用一个 typedef 来定义一个统一的 bool 类型:

  typedef char bool_t;

  _t 表示这些数据类型是通过 typedef 来定义的,而不是新的数据类型。也就是说,它们其实是我们已知的数据类型的别名。这样就便于代码的维护。

  另外,在涉及到跨平台时,不同的平台会有不同的字长,所以利用预编译和 typedef 可以方便的维护代码,例如:uint8_t、uint16_t 等。

  typedef signed char int8_t;

  typedef short int int16_t;

  创建 BYTE 作为无符号单字符类型的别名

  typedef unsigned char BYTE;

  // 使用自定义的数据类型 BYTE 来定义无符号单字符类型变量

  BYTE b1, b2;

  创建函数指针 PFI 的别名

  typedef int (*PFI)(char *, char *);

  也可以使用 typedef 来为自定义的数据类型取一个新的名字,例如:可以对结构体使用 typedef 来定义一个新的别名(数据类型),然后使用这个新的数据类型来直接定义结构变量:

  #include

  #include

  typedef struct BOOKS {

  char title[50];

  char author[50];

  char subject[100];

  int id;

  } MyBook;

  int main() {

  MyBook book1;

  strcpy(book1.title, "C");

  strcpy(book1.author, "Runoob");

  strcpy(book1.subject, "C");

  book1.id = 123;

  printf("Book‘s title: %s author: %s subject: %s id: %d ", book1.title, book1.author, book1.subject, book1.id);

  return 0;

  }

  关键字 typedef 和预处理器指令 #define 的区别

  C/C++ 编程语言中,typedef 关键字用来为特定的数据类型取一个别名,或者将其称之为 “定义了一种新的数据类型”。无论如何,其最终的目的是为了使源代码更易于阅读和理解。它通常用于简化声明复杂的数据类型组成的结构 。

  比如,在 C 中没有 bool 类型,于是很可能出现一个程序员使用 int,一个程序员使用 short 的情况,会比较混乱。这时最好使用一个 typedef 来定义一个统一的 bool 类型:

  typedef char bool_t;

  _t 表示这些数据类型是通过 typedef 来定义的,而不是新的数据类型。也就是说,它们其实是我们已知的数据类型的别名。这样就便于代码的维护。

  另外,在涉及到跨平台时,不同的平台会有不同的字长,所以利用预编译和 typedef 可以方便的维护代码,例如:uint8_t、uint16_t 等。

  typedef signed char int8_t;

  typedef short int int16_t;

  创建 BYTE 作为无符号单字符类型的别名

  typedef unsigned char BYTE;

  // 使用自定义的数据类型 BYTE 来定义无符号单字符类型变量

  BYTE b1, b2;

  创建函数指针 PFI 的别名

  typedef int (*PFI)(char *, char *);

  也可以使用 typedef 来为自定义的数据类型取一个新的名字,例如:可以对结构体使用 typedef 来定义一个新的别名(数据类型),然后使用这个新的数据类型来直接定义结构变量:

  #include

  #include

  typedef struct BOOKS {

  char title[50];

  char author[50];

  char subject[100];

  int id;

  } MyBook;

  int main() {

  MyBook book1;

  strcpy(book1.title, "C");

  strcpy(book1.author, "Runoob");

  strcpy(book1.subject, "C");

  book1.id = 123;

  printf("Book‘s title: %s author: %s subject: %s id: %d ", book1.title, book1.author, book1.subject, book1.id);

  return 0;

  }

  关键字 typedef 和预处理器指令 #define 的区别 郑州治疗胎记哪家好 http://www.zzzykdmlk.com/

  #define 是 C 的预处理器指令,也称之为 C 指令,用于为各种数据类型定义别名,与关键字 typedef 类似,但是它们有以下几点不同:

  typedef 仅限于自定义数据类型标识符的别名,#define 不仅可以为数据类型定义别名,也能为实际的数值定义别名。

  typedef 是由编译器处理的,#define 语句是由预处理器进行处理的。

  #include

  /* 自定义常量 */

  #define TRUE 1

  #define FALSE 0

  int main() {

  printf( "TRUE 的值: %d ", TRUE);

  printf( "FALSE 的值: %d ", FALSE);

  return 0;

  #define 是 C 的预处理器指令,也称之为 C 指令,用于为各种数据类型定义别名,与关键字 typedef 类似,但是它们有以下几点不同:

  typedef 仅限于自定义数据类型标识符的别名,#define 不仅可以为数据类型定义别名,也能为实际的数值定义别名。

  typedef 是由编译器处理的,#define 语句是由预处理器进行处理的。

  #include

  /* 自定义常量 */

  #define TRUE 1

  #define FALSE 0

  int main() {

  printf( "TRUE 的值: %d ", TRUE);

  printf( "FALSE 的值: %d ", FALSE);

  return 0;

以上是关于数据类型的别名的主要内容,如果未能解决你的问题,请参考以下文章

NEON 矢量数据类型的别名

数据变量的别名

使用 MSSQL 数据库类型别名,jooq 3.7.3 将它们转换为正确的 Java 类型,但 3.12.3 将它们全部转换为 Java 类型 Object

基本数据类型

JOOQ 可以为 H2/Postgresql 别名 Liquibase JSONB 数据类型吗

数据结构基础-结构体struct及类型别名typedef的使用