c - char* 数组应该以 '\0' 或 "\0"结束?

标签 c pointers null

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

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/

相关文章:

c - 带有 MAP_FIXED 的 mmap 上的 SIGBUS | map 文件 | MAP_SHARED

c++ - 代码作为 C 文件工作,但不作为 C++ 文件工作,错误 : '__builtin_types_compatible_p' was not declared in this scope

C 程序段错误

python - 在 MySQL 结果中过滤 NULL 列

php - jQuery if() 要求空 ajax 响应时效果不佳

c - 在linux lockf、flock和fcntl下用C语言锁定文件是什么意思?

c - 如何将文件打印到屏幕上?

c - typedef 结构中的指针

c - 奇怪的指针函数

java - 如何检查变量是否为空?