- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我初始化像 char str1[] = {'a','b','c'}
这样的 char 数组(数组大小未设置)并使用循环找到它的长度时 str1[i] != '\0'
,我得到 length = 4
。相反,当我像 char str2[10] = {'a','b','c'}
(设置数组大小)一样初始化并使用相同的方式查找长度时,我得到长度 = 3
。为什么 str1[3]
包含垃圾值但 str2[3]
中没有?
最佳答案
char str1[] = {'a', 'b', 'c'};
创建一个包含 3 个字符的数组,值为 'a'
, 'b'
和 'c'
。数组的大小为 3,您可以使用 sizeof str1
查看(这会返回字节数,但作为 char
定义为 1 个字节,它是相同的作为元素的数量)。尝试计算此数组中包含的字符串的长度会导致未定义的行为,因为 str1
确实不包含 C 风格的字符串没有 '\0'
终止符。你的循环计算超出了数组的范围。
char str2[10] = {'a', 'b', 'c'};
创建一个包含 10 个字符的数组,值为 'a'
、'b'
、'c'
和 7 个 '\0'
。数组的大小是 10。计算 str2
中字符串的长度得到 3,因为 str2[3]
是 '\0'
;
如果你想创建一个包含 C 风格字符串的数组而不指定大小,你可以这样做 char str[] = {'a', 'b', 'c', '\0'} ;
,或者更简单地说,char str[] = "abc";
。
关于arrays - 当我初始化一个 char 数组而不在 C 中设置数组大小时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65866366/
我创建了一个分支来开发新功能。由于这个新功能完全是作为一个新项目开发的,唯一可能的冲突来源是解决方案文件。 随着功能的开发,主分支更新了几次。当我完成开发和测试时,我做了: git checkout
我是一名优秀的程序员,十分优秀!