假设我们有一个字符指针数组
char* array[] = { "abc", "def" };
现在到底该放什么呢?
char* array[] = { "abc", "def", '\0' };
或
char* array[] = { "abc", "def", "\0" };
不过,这两种方法都有效。我们只需要根据情况检查一下
喜欢
array[ index ] != '\0';
或
array[ index ] != "\0";
我的问题是哪一个更好?大多数程序员都用哪个?
编辑
大多数答案都说空值比“\0”和“\0”好。
但我一直认为
null与“\0”相同,后者与0x0或0相同
是不是错了?
最佳答案
我会以NULL
结尾。为什么?因为你不能这样做:
array[index] == '\0'
array[index] == "\0"
第一个是比较a
char *
和achar
,这不是你想要的。你必须这样做:array[index][0] == '\0'
第二个根本不起作用。你在比较a
char *
和achar *
,是的,但是这个比较没有意义。如果两个指针指向同一块内存,则通过。您不能使用==
来比较两个字符串,必须使用strcmp()
函数,因为除了一些(我的意思是很少的)语法细节之外,c没有对字符串的内置支持。鉴于:array[index] == NULL
工作很好,传达了你的观点。
关于c - char *数组应以“\0”或“\0”结尾吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1483232/