字符[] vs LPCSTR 奇怪的行为



你能解释一下为什么,为了像这样转换字符数组:

char strarr[5] = {65,83,67,73,73}; //ASCII

进入LPCSTR要被GetModuleHandleA()GetProcAddress()接受,我必须先将0附加到末尾?

即我有:

char strarr[6] = {65,83,67,73,73,0};

然后才转换为(LPCSTR)&strarr.

出于某种原因,我没有得到第一个工作,只有有时(即如果我不在最后添加0),而如果我在最后添加零 - 这一直有效。为什么我必须加零?

哦,还有一个附带的问题 - 当我立即使用元素初始化数组时,为什么C++中我必须在 [] 中明确说明数组的大小?(如果我不说明大小,那么它不起作用)

谢谢。

这些函数需要NULL终止的字符串。

由于您只给它们一个指向 char 数组的指针,因此它们无法知道它的大小,因此需要一个特定的值(终止NULL字符)来指示字符串的结尾。

最新更新