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