你能解释一下为什么要转换像这样的字符数组:
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 ++中我必须在[]中显式声明数组的大小,当我用元素立即初始化它时? (如果我没有说明尺寸,那么它不起作用)
感谢。
答案 0 :(得分:3)
这些函数期望NULL
终止字符串。
由于你只给它们一个指向char数组的指针,所以它们不可能知道它的大小,因此需要一个特定的值(终止NULL
字符)来表示字符串的结尾。 / p>