typedef和#define最大的区别就是typedef用于给变量起别名,而#define只是简单的字符串替换。大家可能会疑惑了,字符串替换不也是别名吗?呃呃呃。。。这个真不好反驳,具体还是看程序吧!
#include <iostream>
using namespace std;
typedef int* P1int;
#define P2int int*
int main()
{
P1int a, b; //int *a, *b;
P2int c, d; //int *c, d;
cout << sizeof(a) << endl;
cout << sizeof(b) << endl;
cout << sizeof(c) << endl;
cout << sizeof(d) << endl;
return 0;
}
运行结果:
看看结果为什么最后一个结果跟前面三个不一样呢?因为前面三个都是变量地址长度,而最后一个是变量长度,具体区别看程序注释。
有几点要注意的:
- #define是一个比较旧的用法,现在不建议使用它,因为容易出现问题,它的功能应该使用typedef和const来代替
- typedef 变量类型在前,别名在后,需要
;
结尾,#define替换的字符串在前,被替换的内容在后,不要;
结尾