Assignation rend le pointeur d’Int sans sortie

Je comstack du code pour un programme qui mémoise des nombres de fibonacci. Le programme fonctionne parfaitement, mais lorsque je comstack dans un environnement Linux, je reçois cet avertissement avant de comstackr.

line 61: warning: assignment makes pointer from integer without a cast [enabled by default] 

Voici un extrait de code indiquant l’origine de cet avertissement. Je vais essayer de montrer les éléments les plus pertinents pour obtenir la meilleure image possible de la situation.

 int InitializeFunction(intStruct *p, int n) p->digits = (int)malloc(sizeof(int) * 1); if(p->digits == NULL) handleError("Got error"); //making the one index in p->digits equal to n p->digits[0] = n; //incrementing a field of 'p' p->length++; //return 1 if successful return 1; 

Cette fonction n’est appelée que deux fois dans un but bien précis. il est utilisé pour initialiser les deux cas de base dans la séquence de fibonacci f [0] = 0 & f [1] = 1. C’est son seul but. Donc, si je passe par référence l’adresse d’un index spécifique dans un tableau de structures, elle est simplement supposée initialiser ces valeurs:

 Initializer(&someIntStruct[0], 0) ----> after function -> someIntStruct[0] == 0 Initializer(&someIntStruct[1], 1) ----> after function -> someIntStruct[1] == 1 

pensées?

changement

 p->digits = (int)malloc(sizeof(int) * 1); 

à

 p->digits = (int*)malloc(sizeof(int) * 1); 

Je suspecte que l’avertissement concerne cette ligne:

 p->digits = (int)malloc(sizeof(int) * 1); 

Puisque malloc renvoie un vide *, alors que vous le lancez en entier. Je suppose que p->digits est un int* ?

Essayez de le changer pour:

 p->digits = (int *)malloc(sizeof(int) * 1); 

Il est considéré comme une mauvaise pratique de jeter le résultat de Malloc.

Et comme déjà indiqué, vous ne le faites pas correctement non plus (devrait être (int*) ).