我最近遇到了C面试编码问题.像"void Foo(char**sarr)"这样的一般功能.它给了我一个输入
char* data[] = {"4352", "3242", "2432143", "234", "", "324", 0}
Run Code Online (Sandbox Code Playgroud)
我是C的新手,但熟悉C++.对于这种情况,我真的不知道这个'*'在这个char*数组中意味着什么.我知道C有一个字符串的终结符为'\ 0'.但是0意味着什么?或者这个输入完全错误/无效?提前致谢.
0 是在C中写入空指针常量的方法之一.如果他们写的话可能会更明显:
char* data[] = {"4352", "3242", "2432143", "234", "", "324", NULL};
Run Code Online (Sandbox Code Playgroud)
这相当于.
空指针用作数组末尾的指示符(类似于字符'\0'标记字符串结尾的方式.如果您在数组上进行迭代,则可以使用以下内容:
for (var i = 0; data[i] != 0; i++) {
// do something with data[i]
}
Run Code Online (Sandbox Code Playgroud)
你也可以使用data[i] != NULL;,它们是等价的.