C语言 typedef 和 #define

来源:互联网 发布:mac图片ps 编辑:程序博客网 时间:2024/05/17 05:08

typedef 相当于给类型去了一个新名字

#define 只是简单的字符串替换


例1:

typedef unsigned long int u32;(注意末尾分号)

#define u32 unsigned(注意没有分号)


在这里其实typedef 和 #define 效果其实差不多


例2:

typedef  char*  p1;

#define  p2  char*

p1 a,b;

p2 a,b;

到这里,它们的不同就体现出来了:

p1 a,b; 相当于char* a,b (其中a是一个char类型指针,而b是一个字符型变量)

p2 a,b; 相当于char* a,char* b(其中a,b都是char类型指针)


例3:

typedef  char*  p1;

#define  p2  char*

const p1 a;

const p2 b;


好吧,之前我以为它们没什么区别,可是百度之后,我跪了。

const p1 a; 相当于 char * const a (常指针,a不能修改,但a所指向的内容可以修改)

const p2 b; 相当于const char* b (a 能修改,但a所指向内容不能修改)


这里有个注意的地方 —— char const* a 等同于const char *a