在C语言中 define 为替换, typedef 为类型起个别名,他们之间有一些区别一定要注意。
#include<stdio.h>
#include<stdlib.h>
/* 注意二者的区别
define 先写别名 再写要被替换的类型或变量,后面没有分号
typedef 先写类型再写别名,后面有分号
*/
#define charp char *
typedef char* charpp;
void main()
{
charp x, y;
printf("%d %d \n", sizeof(x), sizeof(y)); //输出: 4 1
/*
上面代码等价于:
char *x;
char y;
或:char *x,y;
*/
charpp a, b;
/*
上面代码等价于:
char *a;
char *b;
或:char *a,*b;
*/
printf("%d %d \n", sizeof(a), sizeof(b)); //输出: 4 4
system("pause");
}