为什么sizeof("string")打印的长度超过"string"的长度?

kar*_*192 -1 c c++ sizeof

# include <stdio.h>
int main()
{
        int a = sizeof("string");
        printf("%d", a );
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码打印7作为输出,而字符串的长度只有6.有人可以解释一下吗?

jua*_*nza 8

这就是发生的事情:

  • 字符串文字"string"是一个(const)字符数组,包括一个空终止字符,即{'s', 't', 'r', 'i', 'n', 'g', '\0'}.在您的示例中,所述数组有7个元素.
  • sizeof应用于数组的运算符会产生以字节为单位的大小.
  • 数组的大小是每个元素大小的总和.
  • 一个的大小char是1.

因此,您可以在文字中显示明确的字符数,以及空终止符.

C和C++中的行为相同