在 C 中初始化以 NULL 结尾的字符串数组的正确方法

标签 c string arrays

这段代码是否正确?

char *argv[] = { "foo", "bar", NULL };

最佳答案

它在语法上是正确的,并且确实创建了一个以 NULL 结尾的字符串数组。

argv 作为 char*[](或等效地,char**)传递给 main,但它“更正确”为将字符串文字视为 const char* 而不是 char*。因此,对于这个特定示例,您需要 const char *argv[] = {"foo", "bar", NULL };

也许您并不真的打算用“foo”初始化它,但实际上是用一个您希望通过 argv 修改的可修改字符串。在那种情况下 char*[] 是正确的。这就是 Charles 所说的代码是否“正确”取决于你用它做什么的意思。

关于在 C 中初始化以 NULL 结尾的字符串数组的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2750846/

相关文章:

c - 无符号整数运算中低于零

c++ - DuplicateHandle() 是否进行任何进程间通信 (IPC),如果不进行,为什么要使用目标参数?

c++ - 删除编译器警告的危险方法?

Java教科书: "the size of an array must be known at compile time"

c++ - 指针弄乱数组元素的地址

C 中的 main() 之前不能声明 void 函数

javascript - 是否可以在 jQuery/Javascript 中存储非实例化对象的信息?

python - 通配符字符串搜索

java - 如何将 Char 数组的子字符串传递给 Java 的另一个函数?

javascript - 我必须遍历多级 JSON 并删除某些键