c - 内置函数malloc中的不兼容声明和c中赋值错误中的不兼容类型

标签 c

 char 
 char* c[30];
    c = (char*) malloc(30*sizeof(char) );

这如何在我声明 malloc 的行中给出内置函数警告中的不兼容声明以及赋值错误中的不兼容类型。根据 malloc 的语法,我应该不会有任何错误

最佳答案

您已将 c 声明为数组。您不能更改数组的值,而且数组不是指针。

c 具有类型 (char*)[30](即 30 个字符指针的数组),而不是 char* 作为您的投建议。

如果您尝试为 30 个字符创建一个动态分配的字符“数组”,请使用

char *c = malloc(30);

如果你真的想要一个包含 30 个字符指针的数组,例如在其每个元素中为其分配 30 个字符的空间,使用

int i;
for(i = 0; i < sizeof c/sizeof c[0]; i++) {
  c[i] = malloc(30);
  if(c[i] == NULL) {
    //handle error
   }
}

关于c - 内置函数malloc中的不兼容声明和c中赋值错误中的不兼容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2663289/

相关文章:

c - 如何在 C 中划分愚蠢的大数

从 linux x32/x64 交叉编译到 netbsd mips/el

c - 调整输出(也许是自动换行?)

c - 第一个 C 编译器是如何编写的?

c - c中的指针和数组有什么区别?

c - 如何在 C 中模拟同一 UUT 中的函数

c - 在函数中使用#define

c - 并行/组合多个 64 位值的按位排列

c - Win32 : Accessing a partition beyond the end of a volume?

c - 如何正确为接收矩阵的 C 函数创建 header