小编JJG*_*ong的帖子

C什么时候应该将char **终止为null?

在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]以及之后的所有内容])似乎尚未执行。

c arrays printf pointers char

0
推荐指数
1
解决办法
1516
查看次数

标签 统计

arrays ×1

c ×1

char ×1

pointers ×1

printf ×1