1、typedef定义及使用
使用typedef
关键字为指定类型取一个别名,可以为char*
取一个别名为pStr
。
例如,
typedef char* pStr;
例如,
#include#include typedef struct Books{ char title[50]; char author[50]; char subject[100]; int book_id;} Book;int main( ){ Book book; strcpy( book.title, "C 教程"); strcpy( book.author, "wonhero"); strcpy( book.subject, "编程语言"); book.book_id = 1; printf( "书标题 : %s\n", book.title); printf( "书作者 : %s\n", book.author); printf( "书类目 : %s\n", book.subject); printf( "书 ID : %d\n", book.book_id); return 0;}
2、typedef 和 #define区别
typedef
定义一种类型的别名,而不是简单的宏替换。
typedef
仅限于为类型定义符号名称,#define
不仅可以为类型定义别名,也能为数值定义别名,比如可以定义 1 为 ONE。typedef
是由编译器执行解释的,#define
语句是由预编译器进行处理的。
例如,
typedef char* pStr1;#define pStr2 char*;pStr1 s1,s2;pStr2 s3,s4;
上面示例中,s1
、s2
、s3
都被定义为char *
,而s4则定义成了char
,不是我们所预期的指针变量(相当于:char *s3,s4;
)。根本原因就在于#define
只是简单的字符串替换而typedef
则是为一个类型指定别名。
例如,
#include#define TRUE 1#define FALSE 0typedef char* pStr1;#define pStr2 char*pStr1 s1,s2;pStr2 s3,s4; int main( ){ printf("size of s1 is: %d\n",sizeof(s1));//char* 类型 printf("size of s2 is: %d\n",sizeof(s2));//char* 类型 printf("size of s3 is: %d\n",sizeof(s3));//char* 类型 printf("size of s4 is: %d\n",sizeof(s4));//char类型 printf( "TRUE 的值: %d\n", TRUE); printf( "FALSE 的值: %d\n", FALSE); return 0;}