假设我们有一个字符指针数组

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"

第一个是比较achar *和achar,这不是你想要的。你必须这样做:
array[index][0] == '\0'

第二个根本不起作用。你在比较achar *和achar *,是的,但是这个比较没有意义。如果两个指针指向同一块内存,则通过。您不能使用==来比较两个字符串,必须使用strcmp()函数,因为除了一些(我的意思是很少的)语法细节之外,c没有对字符串的内置支持。鉴于:
array[index] == NULL

工作很好,传达了你的观点。

关于c - char *数组应以“\0”或“\0”结尾吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1483232/

10-10 17:54