c - 用 0 而不是 '\0' 终止 c 字符串是错误的吗?

标签 c string

C 字符串以 null 结尾,这意味着在字符数组中,索引 strlen() 处的字符是一个所有位都设置为 0 的字节。我看到代码中,使用整数 0 代替 '\0'。但是由于 sizeof(int) > sizeof(char),这实际上可能会超出为数组分配的空间 - 我错了吗?或者在这种情况下,编译器是否隐式地将 int 转换为 char

最佳答案

当将值 0 存储在 char 数组中时,int 将隐式转换为 char。

实际上,'\0' 的类型是int(与预期相反),所以somechararray[x]=0somechararray[x]='\0' 在语义上是等价的。

就我个人而言,我更喜欢使用 '\0',以便更清楚地表明我正在处理一个字符串。

关于c - 用 0 而不是 '\0' 终止 c 字符串是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2257573/

相关文章:

c - 首次使用类型时,Visual Studio 是否可能中断?

c - 函数如何创建结构?

c - 如何计算输入文件中数字的倍数?

android:AutoCompleteTextView 的字符串数组大小限制

php - 将逗号分隔的字符串转换为整数数组?

c - 在 C 中读取/proc/cpuinfo 并打印匹配行

c - 2-Opt 本地搜索实现

c++ - 字符串的排列--error : no matching function for call to ‘std::set<char>::insert(std::string&)’

python - 计算字符串中尾随换行符的数量

python - 在字符串列表中的空格中插入字符