C程序 - 带有\ 0字符的sizeof字符串

DeC*_*DeR 3 c string sizeof

解释sizeof如何确定字符串的长度.

#include<stdio.h>

int main()
{
    char str[] = "Sasindar\0Baby\0";
    printf("%d\n", sizeof(str));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 6

sizeof不确定字符串的长度.它确定结构在内存中占用的字节数.

在您的情况下,结构是str一个字节数组.编译器知道有多少字节(包括两个尾随'\0's)被放入数组中,因此它在编译时产生适当的大小.sizeof不知道这str是一个以null结尾的C字符串,所以它产生了15.

与此相反strlen,它将您的字符串解释为C字符串,并返回第一个字符串之前的字符数'\0'.