c - 使用 C 中的值初始化 char 数组会导致段错误

标签 c arrays char segmentation-fault

我有一个 char 数组,定义如下

char users[5] = "";

然后,我通过分配将用户添加到该数组,如下所示

users[0] = "UserOne";
users[1] = "UserTwo";

但是,我的程序因段错误而崩溃。

我在网上查了一下,这似乎与内存有关。我尝试搜索一篇讨论内存分配的帖子,并找到了 malloc。但是,我对 malloc 函数有点困惑。

我尝试使用

为我的 char 数组分配内存
users = malloc(sizeof(char));

有人可以向我解释一下我做错了什么吗?

最佳答案

char 是单个字符。

char* user[5];

这是创建指向 char 数组(字符串)的指针数组的正确方法。

我不知道用户声明中 = "" 的用途,但它应该是一个错误。你可以这样做

char* user[5] = { "", "userOne", "userTwo", "", "" };

关于c - 使用 C 中的值初始化 char 数组会导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40066250/

相关文章:

c - 嵌套 union 和结构程序不起作用

java - 如何多次水平打印二维数组

java - System.out.println( '3' + 0 );

c - 返回指向 C 中结构的指针

c - 为什么这个程序没有显示任何错误?

C函数原型(prototype)编译错误

c - 为什么 printf ("%s\n", "123456789"+ 3);//输出 : "456789"

java - 从 JSON 数组获取 JSON 数组 Java android

java - 在java数据模式中映射嵌套json

java替换字符串中的字符