typedef和define的区别

typedef是给一个类型起一个别名(后面有分号)

宏定义是单纯的字符替换(后面无分号) 

1.typedef:它在自己的作用域内给一个已经存在的类型一个别名。它是在是在编译时处理的。

//头文件
#include<typeinfo>


typedef unsigned long long int uint64;//给类型unsigned long long int起一个别名uint64

typedef int ARR[10];  //给长度为10的整型数组起一个别名ARR

typedef struct Student  //给结构体struct Student {int age;ARR num;}起一个别名struct Student
{
	int age;
	ARR num;
}Student;

typedef struct Student //给结构体指针struct Student {int age;ARR num;}Student, *起一个别名PStudent
{
	int age;
	ARR num;
}Student,* PStudent;

2.宏定义:是预处理指令。在编译预处理时进行简单的替换

#define N 10;
int main()
{
   printf("%d",N);
   return 0;
}

举个栗子:

//用两种方式定义int*
typedef int* Pint1;
#define Pint2 int*


int main()
{
	Pint1 a, b; //等同于int* a,* b;
	Pint2 c, d;//等同于int* c, d;
	return 0;
}

 从上述可以看出#define只是单纯的替换

上一篇:c# – MongoDB GridFS存储桶?


下一篇:2021-12-14【Codeforces Round #759 (Div. 2, based on Technocup 2022 Elimination Round 3)】【题解A-C】