鱼C论坛

 找回密码
 立即注册
查看: 4891|回复: 7

[技术交流] 让你不再晕,完整诠释PCHAR、LPCH、PCH、NPSTR、LPSTR、PSTR……

[复制链接]
发表于 2015-2-3 01:42:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 suxiang2014 于 2015-2-3 01:48 编辑

先看三行代码:
typedef char CHAR;
typedef CHAR *PCHAR,*LPCH,*PCH,*NPSTR,*LPSTR,*PSTR;
typedef CONST CHAR *LPCCH,*PCCH,*LPCSTR,*PCSTR;
解释:
1. 第一行:CHAR就是char类型,只是一个大写一个小写。

2. 第二行:PCHAR是一个指向字符的char型指针,因为P就有指针的含义,而CHAR有字符的含义。

3. 第二行:LPCH和PCH含义一样,都是指向字符的指针。那为什么第一个前面加L,这是历史遗留问题,以前分远指针(开头加L)和近指针(开头加N),现在指针都是四个字节,不分远近,加N和加L都一样,不要被L误导,当你看到LPCH时把它看成PCH就可以了。

4. 第二行:同理NPSTR、LPSTR和PSTR都一样,都把它看成PSTR,表示指向字符串的指针。STR就是string的缩写。

5. 第三行:LPCCH和PCCH与第二行LPCH和PCH相比多了一个C,为什么?你看定义是不是有一个CONST,表示这是常量指针,就是不能修改指针指向的内容,所以多了一个C。LPCCH和PCCH表示指向一个字符的常量指针。LPCSTR和PCSTR表示指向字符串的常量指针。

接着看四行代码:
typedef unsigned short wchar_t;
typedef wchar_t WCHAR;
typedef WCHAR *PWCHAR,*LPWCH,*PWCH,*NWPSTR,*LPWSTR,*PWSTR;
typedef CONST WCHAR *LPCWCH,*PCWCH,*LPCWSTR,*PCWSTR;
解释:
1. 第二行:WCHAR实际就是unsigned short类型,W就是word的缩写,占两个字节。

2. 第三行:PWCHAR、LPWCH、PWCH表示指向宽字符的unsigned short指针;LPWSTR和PWSTR表示指向字符串的unsigned short指针。

3. 第三行:表示常量指针。

最后看这七行代码:
#indef UNICODE
typedef unsigned short TCHAR,*PTCHAR,*PTCH,*LPTCH,*PTSTR,*LPTSTR;
typedef const unsigned short *LPCTSTR;
#else   //ANSI
typedef char TCHAR,*PTCHAR,*PTCH,*LPTCH,*PTSTR,*LPTSTR;
typedef const char *LPCTSTR;
#endif
将二三行和五六行代码对比可知,除了类型由unsigned short变成 char其他都没变,其中每个都含有有一个T,表示通用,可以在ANSI和Unicode两个版本中来回切换使用而不用改代码。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-5-13 14:37:36 | 显示全部楼层
谢谢分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-7 17:10:22 | 显示全部楼层
谢谢楼主耐心教导
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-7 15:58:29 | 显示全部楼层
十分感谢楼主分享!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-6 10:42:20 | 显示全部楼层
支持楼主分享·
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-9 16:51:41 | 显示全部楼层
感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-10 09:18:36 | 显示全部楼层
顶帖,讲的不错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-10 23:11:12 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 07:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表