超出范围的C数组内容为'\ 0'但不是随机值

use*_*282 1 c string

我有一个阵列

char * string = “hello”?
Run Code Online (Sandbox Code Playgroud)

当我读string[5],值为0.这不应该是一个随机值吗?

当我memcmp用来比较两个数组时,我的怀疑来自.argv长度比数组长度长,但它可以正常工作.我知道memcmp当它读取'\ 0'时停止,但数组没有'\ 0'.我在Dev C++上测试了这个.

Dan*_*her 5

不,数组"hello"包含六个chars,最后一个是'\0'.所以在你的情况下string[5]保证是'\0'.string[6]但是,给你未定义的行为.

memcmp不会停留在0字节,只会停止strcmp.