首页 > 代码库 > [Syntax] typedef & const
[Syntax] typedef & const
略: typedef 和 #define 的比较
- #define 是编译预处理时执行,会进行简单替换
- typedef 是在编译时期处理,晚于#define
情形1
const char *p1; char const *p2; p1 = p2 = "指针可变,指向内容不可变"; char * const p3 = "指针不可变,指向内容可变"; /** * Error Code Below * p1[0] = ‘x‘; * p3 = "xxx"; */ printf("p1 = %s\np2 = %s\n", p1, p2); printf("p3 = %s\n", p3);
- const在指针左侧,const修饰指针指向的内容
- const在指针右侧,const修饰指针本身,且需要在定义时初始化
情形2
typedef char * pstr; const char * p1 = "abcde"; const pstr p2 = "abcde"; p1++; /** * Error Code Below * p2++; */ printf("p1++ = %c\n", *p1);
可以发现,“const pstr p2” 这句,const 修饰的是指针本身,而不是指针指向的内容,原因在于:
pstr 被我们 typedef 成了一个新的类型,它和 const int p2 没有区别,const 修饰的就是p2自身,而p2的类型是pstr,psrt则是我们创造的类型,是一个指向char的指针。
[Syntax] typedef & const
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。