c - "0"在C中的二维字符数组(char * [])中意味着什么

标签 c arrays char

最近遇到一道C面试编码题。像“void Foo(char** sarr)”这样的通用函数。它给了我一个输入

char* data[] = {"4352", "3242", "2432143", "234", "", "324", 0}

我是 C 的新手,但熟悉 C++。对于这种情况,我真的不知道这个 char* 数组中的这个 '0' 是什么意思。我知道 C 有一个字符串终止符 '\0'。但是0是什么意思呢?或者这个输入是错误的/无效的? 提前致谢。

最佳答案

0 是在 C 中编写空指针常量的方法之一。如果他们这样写可能会更明显:

char* data[] = {"4352", "3242", "2432143", "234", "", "324", NULL};

这是等价的。

空指针被用作数组结尾的指示符(类似于字符 '\0' 标记字符串结尾的方式。如果您正在遍历数组,你可以使用类似的东西:

for (var i = 0; data[i] != 0; i++) {
    // do something with data[i]
}

你也可以使用data[i] != NULL;,它们是等价的。

关于c - "0"在C中的二维字符数组(char * [])中意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41026087/

相关文章:

c - STM32中const char和char指针在内存中是如何表示的

c - 打印数组的最小值和最大值

php - 从 PHP 数组更新 mysql 数据库中的值

c - 如果字符串还包含字母,如何将 char 字符串转换为一个 int 数字

C:从文件中读取未知数量的未知长度的行

c++ - 如何使用 SendMessage 将新行/换行符附加到多行文本框?

php - 哪个是最好的 array_search 或 in_array?

android - 如何设置 ImageView[] 数组?

java - 如何按顺序统计字符串中的字符?

我可以使用 char[] 或 char* 作为函数的返回值吗?