在StackOverflow上找不到任何可解决此问题的问题。
我意识到char *数组不必以NULL终止,但是想知道什么时候需要它?
例如,在调试代码时,我使用很多printf()来查看我的变量在代码的某些阶段是否正确。
我有一个char **值,可容纳4个char *,最后一个char *为NULL。使用NULL终止时,从值[0]到值[3]的printfs会给我这 一点:名称只是我完成打印值数组后立即打印的另一个数组
Testing values1[0]: %HOME/bin:%PATH
Testing values1[1]: /%HOME/include
Testing values1[2]: /%HOME/lib
Testing values1[3]: (null)
Testing names2[0]: PATH
Testing names2[1]: IDIR
Testing names2[2]: LIBDIR
Run Code Online (Sandbox Code Playgroud)
我有一个char **和3个char *,所有这些都是有效的char *。如果不使用NULL终止,则printf从values [0]到values [3]给了我(名称未显示)
Testing values1[0]: %HOME/bin:%PATH
Testing values1[1]: /%HOME/include
Testing values1[2]: /%HOME/lib
Run Code Online (Sandbox Code Playgroud)
我认为,当printf(....,values [3])将是未定义的行为,例如打印垃圾值,但是如上面的输出所示,包括printf(....,values [3]以及之后的所有内容])似乎尚未执行。