char [] vs LPCSTR奇怪的行为

时间:2012-05-26 08:06:12

标签: c++ windows arrays char lpcstr

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

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

LPCSTRGetModuleHandleA()接受GetProcAddress(),我必须首先将0追加到最后?

即。我有:

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

然后才转换为(LPCSTR)&strarr

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

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

感谢。

1 个答案:

答案 0 :(得分:3)

这些函数期望NULL终止字符串。

由于你只给它们一个指向char数组的指针,所以它们不可能知道它的大小,因此需要一个特定的值(终止NULL字符)来表示字符串的结尾。 / p>