什么是类型定义
typedef
是一个高级数据特性,它可以为某一
类型
自定义名称
,
即类型的别名。
为什么要使用类型定义
1.简化写法
2.提高程序可移植性
//64 位 linux 系统
#include <stdio.h>
#include <stdlib.h>
typedef long int64;
int main(void){
int64 dream = 10000000000; //梦想一百亿
printf("dream: %lld\n", dream);
printf("sizeof(int64): %d\n", sizeof(int64));
return 0;
}
运行结果:
dream: 10000000000
sizeof(int64): 8
//32 window 系统
#include <stdio.h>
#include <stdlib.h>
typedef long long int64;
int main(void){
int64 dream = 10000000000; //梦想一百亿
printf("dream: %lld\n", dream);
printf("sizeof(int64): %d\n", sizeof(int64));
system("pause");
return 0;
}
运行结果:
dream: 10000000000
sizeof(int64): 8
解读:在Windows的64位系统中long类型的变量是八位的,可以存储一百亿这个数字,而在Windows的32位系统中long long类型才可以存储一百亿这个数字,如果我们编写的代码很长,则在不同位数的系统中需要修改非常多的变量类型,如果使用了类型定义就可以大大减少工作量,只需要修改类型变量就可以了。
类型定义的使用
#include <stdio.h>
#include <stdlib.h>
typedef char * STRING;
#define STR char *
int main(void){
STRING s1, s2; //等同于 char *s1; char *s2;
char name[] = "Martin";
s1 = name;
s2 = name;
STR s3, s4; // char * s3, s4;
s3 = name;
s4 = name[0];
system("pause");
return 0;
}
解读:define是非常简单的替换,就是文字的替换,替换之后的文字所表达的是什么意思就是什么意思。但是类型定义不一样,可以理解为类型定义的替换,直接就是这个类型的替换了。
define替换之后按文字字面意思理解,比如 STR s3,s4; 就是char * s3,s4; 这个语句的字面意思就是一个char类型的指针变量和一个char类型的变量,所以STR s3,s4;也就是定义了一个char类型的指针变量s3和一个char类型的变量s4.
类型定义替换之后是对整个类型的替换,比如 STRING s1,s2;就是 char * s1, * s2; 它对s1和s2的类型都进行了替换,所以STRING s1,s2;也就是定义了两个char类型的指针变量,即s1和s2。