我有一个数组
char * string = “hello”;
当我读取string[5]
时,值为0,这不是随机值吗?
我的疑问来自于我使用memcmp
来比较两个数组。 argv 长度比数组长度长,但它工作正常。我知道 memcmp
在读取“\0”时停止,但数组没有“\0”。我在 Dev C++ 上对此进行了测试。
最佳答案
不,数组"hello"
包含六个char
,最后一个是'\0'
。所以在你的情况下 string[5]
保证是 '\0'
。但是,string[6]
会给您未定义的行为。
但是 memcmp
不会停在 0 字节处,只有 strcmp
会。
关于越界的 C 数组内容是 '\0' 但不是随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11538294/