gpt4 book ai didi

c - sizeof(string) 不包含 "\"符号

转载 作者:行者123 更新时间:2023-11-30 14:56:18 25 4
gpt4 key购买 nike

我一直在研究字符串(字符数组)的 strlensizeof ,但我不太明白一件事。我有以下代码:

int main() {
char str[]="gdb\0eahr";
printf("sizeof=%u\n",sizeof(str));
printf("strlen=%u\n",strlen(str));
return 0;
}

代码的输出是:

sizeof=9  
strlen=3

起初我很确定 2 个单独的字符 \ 后跟 0 实际上不会充当 NUL (\0),但我设法发现确实如此。问题是我不知道为什么 sizeof 显示 9 而不是 10。既然 sizeof 按数据类型计算使用的字节数,为什么它不计算 \ 的字节数?

在以下示例中:

char str[]="abc";
printf("sizeof=%u\n",sizeof(str));

由于 NUL 值终止数组,因此会打印出“4”,那么为什么 \ 不被计算在内?

最佳答案

在字符或字符串常量中,\ 字符标记转义序列的开始,用于表示字符值中没有符号的字符值。源字符集。例如,转义序列 \n 表示换行符,\b 表示退格字符,\0 表示零值字符(这也是字符串终止符)等。

在字符串文字“gdb\0eahr”中,转义序列\0映射到单个0值字符; str 的实际内容为 {'g', 'd', 'b', 0, 'e', 'a', 'h', 'r', 0}

关于c - sizeof(string) 不包含 "\"符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44810247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com