avertissement: attribution de fait de nombre entier à partir de pointeur sans un moulage en matrice
Je travaille avec des tableaux dynamiques et c'est la déclaration:
int *vetor = (int *) malloc (tam*sizeof(int));
vetorAleatorio (vetor, tam); //chamando função abaixo
mais quand j'essaie de le passer en paramètre à cette fonction:
void vetorAleatorio(int **vet, int size) {
int i;
for (i=0; i<size; i++)
vet[i] = rand() %1000;}
J'ai les erreurs suivantes:
[Warning] assignment makes pointer from integer without a cast
[Warning] passing arg 1 of `vetorAleatorio' from incompatible pointer type
Quelqu'un sait comment cela se passe?
- C'est juste un commentaire, mais éviter de jeter malloc en C source
- Généralement, vous avez un double argument pointeur (**efp) si vous allez allouer à l'intérieur de la fonction et de l'utiliser en dehors de la fonction. int *vetor = Null; vetorAlea(&vetor, tam); //attribution d'une fonction....
- mais, vous DEVEZ jeter malloc en C++ Source..... (soupir...)
Vous devez vous connecter pour publier un commentaire.
Votre syntaxe de la fonction:
devrait être:
si vous utilisez une double
*
commeint **
pourvet
, puis son incompatibilité de type comme suit:Comprendre Dans votre code vous selon
void vetorAleatorio(int **vet, int size)
déclaration que vous appelez la fonction dans le mauvais sens:vetorAleatorio (vetor, tam);
, vous êtes de passage à l'adresse de l'int = pointeur sur int, et l'argument besoin de l'adresse du pointeur de int = pointeur de pointeur sur int.Vous avez juste besoin d'une rectification comme je l'ai suggéré ci-dessus.
int **vet
déclare que lesvet
argument est un pointeur vers un pointeur versint
. c'est à dire un tableau de tableaux d'entiers. Il semble que vous voulez juste passer un pointeur à un vecteur unique de sorte que vous devez déclarer l'argument typeint*
au lieuVotre signature de fonction pour
vetorAleatorio
est mal de changement:à:
Notez également que vous ne devez jamais jeter la suite de
malloc
dans C, alors le changement:à:
vetor
est de typeint *
, oùveteroAleatorio
est en attente d'uneint **
Vous devriez avoir
Vous avez un supplément de
*
. Cela devrait fonctionner:Vous êtes de passage dans un pointeur vers un int (la variable
vetor
), de sorte que votre déclaration de fonction doit accepter un pointeur vers un int.