数据类型的别名
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;
以上是关于数据类型的别名的主要内容,如果未能解决你的问题,请参考以下文章
使用 MSSQL 数据库类型别名,jooq 3.7.3 将它们转换为正确的 Java 类型,但 3.12.3 将它们全部转换为 Java 类型 Object