在WINNT.H中有如下定义
typedef char CHAR;
typedef CHAR *LPSTR, *PSTR;
也就是说LPSTR与PSTR定义的变量与char *定义的变量完全相同,都可以作为指向字符串的指针,而LPSTR的字面意思是指向字符串的长指针(相对于16位而言),PSTR的字面意思是指向字符串的指针,但是由于32位的普及,从Visual C++ 6.0开始它们完全相同,没有任何区别,只是由于习惯大家还分别在不同的地方使用它们。
typedef char CHAR;
typedef CHAR *LPSTR, *PSTR;
也就是说LPSTR与PSTR定义的变量与char *定义的变量完全相同,都可以作为指向字符串的指针,而LPSTR的字面意思是指向字符串的长指针(相对于16位而言),PSTR的字面意思是指向字符串的指针,但是由于32位的普及,从Visual C++ 6.0开始它们完全相同,没有任何区别,只是由于习惯大家还分别在不同的地方使用它们。
即:LPSTR=PSTR=char *(完全等同)
[url=../msg4/qa77.shtml]QA000377 "TCHAR,CHAR,LPSTR,LPCSTR,char这几个数据类型有何不同"[/url]
中说过了,LPSTR、LPCSTR相当于char *,所以这种类型变量的赋值等同于char *的赋值。如果你不了解char *的赋值,你需要去看看C语言入门的书,比如谭浩强的《C语言程序设计》第9章就介绍了这个问题。下面给出两个例子,一个是直接赋值,另一个是间接的。
Ex1: LPSTR lpstrMsg = "I'm tired.";
Ex2: char strMsg[]="I'm tired.";
LPSTR lpstrMsg = (LPSTR) strMsg;