C 程序 - sizeof string with\0 个字符

标签 c string sizeof

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

#include<stdio.h>

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

最佳答案

sizeof 不决定字符串的长度。它决定了一个结构在内存中占用多少字节。

在您的例子中,结构是 str,一个字节数组。编译器知道有多少字节(包括尾部的两个 '\0')被放入数组中,因此它会在编译时生成正确的大小。 sizeof 不知道 str 是一个空终止的 C 字符串,所以它产生 15。

这与 strlen 形成对比,后者将您的字符串解释为 C 字符串,并返回第一个 '\0' 之前的字符数。

关于C 程序 - sizeof string with\0 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31760349/

相关文章:

c++ - 为什么我的对象的大小没有减小?

c - 字符串数组随机排序

c - 如何从c中的较大字符串中获取子字符串?

c++ - 32 位 int 类型的 Win API 互锁操作

string - 检查字符串是否只是字母(没有符号和数字)lisp

javascript - 在 Javascript 中实现 String 到 Int 的映射

c++ - 无论是否初始化,使用 sizeof(p[0]) 真的无害吗?

C:sizeof()、sizeof()和sizeof

c - union 中变量的对齐

c - 字符串到 ASCII 代码的转换并绑定(bind)它们