C 字符串初始化会导致意外放置空字符

C-string initialization results in unexpected placement of null character

本文关键字:字符 意外 字符串 初始化      更新时间:2023-10-16

谁能向我解释为什么以下脚本在我的机器上输出 27? 为什么初始化 a 时 \0 字符没有定位在索引 15 处? 同样,如果我创建一个指向单个字符的指针,strlen 会为该指针返回 12。

#include<iostream>
using namespace std;
void main()
{
    char a[15];
    cout << strlen(a);
}
除非

指定,否则不会初始化局部作用域的变量。

没有指定初始化值,因此它只是在堆栈上,填充了您输入函数时存在的任何随机垃圾。

a不会被初始化,它只包含垃圾值。这意味着,strlen(a)的返回值将是未定义的,一切皆有可能。