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/