我现在对WinAPI中的CHAR字符串和WCHAR字符串的匈牙利符号前缀感到有点困惑。当我们使用CHAR字符串时,通常会使用这样的前缀:
CHAR szString[] = "Hello";我们有一个以零结尾的字符串szString,所以一切都很好。但当我们使用WCHAR字符串时,通常会使用这样的前缀:
WCHAR pwszString[] = L"Hello";它代表指向以零结尾的宽字符串的指针...但我们的类型不是这样的。指向以零结尾的宽字符串的指针是WCHAR**或PWSTR*。我说错了吗?为什么对于CHAR字符串是sz,对于WCHAR字符串是pwsz而不是wsz?
发布于 2013-04-16 02:31:09
第二个例子具有误导性(尽管并不少见)。它应该是这两个中的一个:
WCHAR wszString[] = L"Hello";
WCHAR *pwszString = L"Hello";由于数组可以在大多数需要指针的上下文中使用,因此一些程序员在区分上有点马虎。
匈牙利语已经过时了,但它可以是useful when used well。
发布于 2013-04-15 22:35:27
CHAR szString[]与CHAR * szString同义。两者都是指向字符串的指针。指向以零结尾的字符串的指针是CHAR*,指向以零结尾的宽字符串的指针是WCHAR* (不是WCHAR**)。
现在,如果您想变得学究,您可以(错误地)声称CHAR[]是“一个字符数组”,在这种情况下,"rgc“可能是正确的前缀。
https://stackoverflow.com/questions/16017771
复制相似问题