gpt4 book ai didi

c - 对于任何字符串 "char name[10]="test"",strlen(name)+1 总是保证与 sizeof(name) 相同吗?

转载 作者:太空狗 更新时间:2023-10-29 16:08:05 34 4
gpt4 key购买 nike

对于字符串 name[],我们可以使用 strlen(name)+1sizeof(name) 互换 在我们的代码中没有经过深思熟虑?他们不一样吗?我检查了一下,发现两者的返回类型都是相同的,size_t。毕竟 sizeof 计算大小为字节的倍数,一个字符占用一个字节,而 strlen() 计算不包括 \0 的字符数,因此我们必须添加 1 使其等于 sizeof 的结果。

因此,除非字符的大小不是 1 字节,否则两者在所有实际用途中不是可以互换且相同的吗?例如分配动态内存时......

最佳答案

对于像char name[10] 这样声明的数组,sizeof(name) 是整个数组的大小,不管里面存的是什么数据。 strlen(name) 返回数组中第一个 0 之前的字符数。如果数组中没有任何零,则 strlen 的行为是未定义的。

关于c - 对于任何字符串 "char name[10]="test"",strlen(name)+1 总是保证与 sizeof(name) 相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16534721/

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