C 字符串初始化会导致意外放置空字符
C-string initialization results in unexpected placement of null character
谁能向我解释为什么以下脚本在我的机器上输出 27? 为什么初始化 a 时 \0 字符没有定位在索引 15 处? 同样,如果我创建一个指向单个字符的指针,strlen 会为该指针返回 12。
#include<iostream>
using namespace std;
void main()
{
char a[15];
cout << strlen(a);
}
除非
指定,否则不会初始化局部作用域的变量。
您没有指定初始化值,因此它只是在堆栈上,填充了您输入函数时存在的任何随机垃圾。
a
不会被初始化,它只包含垃圾值。这意味着,strlen(a)
的返回值将是未定义的,一切皆有可能。
相关文章:
- C++字符*缓冲区的大小
- 尝试将字符串/字符转换为整数会产生意外结果
- 字符数组到十六进制字符串的转换 - 意外输出
- 字符指针不断意外更改
- std::regex_error语言 - 意外的转义字符
- ASCII字符时的意外终结
- C++使用 std::get_time 解析 YYMMDD ISO 8601 日期字符串会得到意外结果
- 从套接字到字节数组的读取数据中的意外字符
- Cout删除了(未签名的字符)指针,给了我意外的结果
- 视觉工作室中涉及 void*、字符串和常量字符 [] 的意外重载解决方案
- 当我尝试反转字符*时出现意外输出
- C++ 代码在输出中抛出意外字符
- 从 istringstream 读取字符时出现意外行为
- 使用%c扫描整数,使用%d扫描字符:意外结果
- 写入文件时出现意外"random"字符
- 使用'b'字符的意外控制台行为
- c++中循环字符时的意外结果
- 初始化数组工作得很好,但是当试图将其打印出来时,它会打印出一个额外的列和一个意外字符
- 使用cout将数组和字符打印到屏幕时出现意外结果
- Qt C++XML意外字符