字符[] vs LPCSTR 奇怪的行为
char[] vs LPCSTR strange behavior
你能解释一下为什么,为了像这样转换字符数组:
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
字符)来指示字符串的结尾。
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 数据成员SFINAE的C++17测试:gcc vs clang
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 正在VS调试器中监视映射条目
- Confusion: decltype vs std::function
- 将IBM Rhapsody模型集成到VS 2019中
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 修改 VS Code 中的默认C++代码段
- 如何使用c++在VS 2019上运行SQL查询
- vs 2015 constexpr变量不恒定,但与2019相比还好吗
- 'HMODULE LoadLibraryA(LPCSTR)':无法将参数 1 从 'const _Elem *' 转换为 'LPCSTR'
- 完美前进使用 std::forward vs RefRefCast
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- consteval wrapper vs. source_location
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- 字符[] vs LPCSTR 奇怪的行为