为什么我会从“不兼容类型'void *'”分配到“分配给'int *'”错误?

FlorianOry

我在codeacademy上学习c,并且从不兼容的类型“ void *”错误中分配了“ int *”我的文件是一个.c文件,其中包括stdlib.h。我不理解该错误,似乎更正使用了相同的代码行。

我正在尝试使用malloc创建一个数组。

我试图找到其他主题的答案。似乎malloc并不是做到这一点的最佳方法,但我想找到一种使其工作的方法。

我在Mac上,我使用emacs编写代码和gcc进行编译。

这是我的代码的一部分:

int main(int argc, char *argv[])
{
  char mot_secret[] = "PISCINE";
  int nombre_lettres = strlen(mot_secret);
  int *pnombre_lettres = &nombre_lettres;
  int *decouverte = NULL;
  int compteur = 10;

  decouverte = malloc(nombre_lettres * sizeof(int));
  if (decouverte == NULL)
    {
      exit(0);
    }

这是解决方案:(我尝试翻译一些变量)

int main(int argc, char* argv[])
{
    char lettre = 0;
    char secretword[100] = {0};
    int *lettreTrouvee = NULL; 
    long coupsRestants = 10; // Compteur de coups restants (0 = mort)
    long i = 0;
    long wordSize = 0;

    wordSize = strlen(secretWord);

    lettreTrouvee = malloc(tailleMot * sizeof(int)); // creates a dynamic array of the size of the original)
    if (lettreTrouvee == NULL)
        exit(0);

错误是:

TP.C:17:16: error: assigning to 'int *' from incompatible type 'void *'
  decouverte = malloc(nombre_lettres * sizeof(int));

非常感谢您的帮助,对于我在英语上的任何错误,我们深表歉意。

用户名

您的文件名称似乎是TP.C

在Unix传统中,C源文件被命名为*.c(小写的c),而C ++源文件被命名为*.C(大写的C)。由于*.cppWindows不区分大小写,因此在Windows上使用了替代方法,但是MacOS上的gcc足够像unix一样,它将*.C文件视为C ++。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从不兼容类型'int(^ __ strong)(void)'分配给'int'

错误:无法将类型“ void *”的值分配给类型“ int **”的实体

错误:从不兼容类型void *分配给char *

不兼容的指针类型从'int(int *)'分配给'void(*)(void *)'

为什么我会收到此错误:参数类型“String”不能分配给参数类型“int”?

收到错误“类型'void'无法分配给类型'ReactNode'”

角度错误:类型“ void”不能分配给类型“ AbstractControl”

错误:类型“ void”不能分配给类型“ HttpEvent <any>”

为什么分配给 int 和 float 不会产生错误,而分配给 while 会产生错误?

从不兼容类型'void(^ __ strong)(int,const char *,int)'分配给'void(*)(int,const char *,int)'

编译错误:尝试将数组分配给数组时,从不兼容的类型“char”分配给“int”

如何修复不兼容的指针,将整数转换从“ void *”分配给“ int”

错误:无法将参数类型“void Function(bool)”分配给参数类型“void Function(bool?)”

错误:参数类型“void Function()?” 不能分配给参数类型“void Function(String?)?”

有人可以找到错误“无法将“void”类型的值分配给VScode中“int”类型的实体的原因吗?

错误 TS2322:类型 'void' 不可分配给类型 'Promise<void> | JQueryPromise<void>'

错误TS2345:类型'(response:string)=> void'的参数不能分配给类型'(((value:{})=> void | PromiseLike <void>)| 空值

打字稿错误:“ undefined []”类型无法分配给“ void”类型

错误:无法将参数类型“ void Function(ImageInfo,bool)”分配给参数类型“ ImageStreamListener”

TypeScript错误:无法将类型“ void”分配给类型“ boolean”

React Native / Typescript / Eslint错误:类型“ void”不能分配给类型“ CompositeAnimation”

错误:类型“ void”不可分配给类型“ ReactNode”

错误:无法将参数类型“ Future”分配给参数类型“ void Function()”

错误:参数类型“函数?” 不能分配给参数类型“void Function(bool?)?”

错误:指向指针转换的不兼容整数从'int'分配给'string'(aka'char *')

错误:从“int”C分配给“string”(又名“char *”)的不兼容整数到指针转换

打字稿错误:输入 '{ onClick: () => void; }' 不可分配给类型 'IntrinsicAttributes'

快速操场中的错误:无法将类型“Int”的值分配给类型“[Int]”

错误TS2345:类型'OperatorFunction <User,void>'的参数不能分配给类型'OperatorFunction <Object,void>'的参数