**`typedef char* p_char` 与 `#define p_char char*` 的区别**

typedef char* p_char#define p_char char* 的区别

在 C/C++ 语言中,typedef#define 都可以用于定义类型别名,但是在处理指针时,两者有重要的区别


1. typedef char* p_char;

typedef char* p_char;
p_char a, b;

等价于:

char* a;
char* b;

typedefp_char 代表 char*,所以 ab 都是 char* 类型的指针。


2. #define p_char char*

#define p_char char*
p_char a, b;

预处理器展开后,代码变为:

char* a, b;

这里 b 只是 char 类型,而不是 char*,等价于:

char* a;
char  b;

这会导致 a 是指针,而 b 只是普通 char 变量,可能引发错误或意外行为。


3. 总结区别

方式代码解释
typedeftypedef char* p_char;p_char a, b; 等价于 char* a; char* b;a 和 b 都是指针
#define#define p_char char*p_char a, b; 展开后变成 char* a, b;a 是指针,b 只是 char

✅ 结论

  • typedef char* p_char; 更加安全可靠,可以确保 p_char 代表 char*,不会引入歧义。
  • #define p_char char* 可能会导致意外错误,因为 p_char a, b; 其实是 char* a; char b;b 不是指针!

💡 建议:尽量使用 typedefusing(C++11 及以上)来定义指针类型,而不要使用 #define

using p_char = char*;  // C++11 推荐方式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值