Variable non definie
Fidio
-
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
dans mon projet c j'ai quelque variable qui ne sont pas définie alors que je les transmet dans la fonction
voici le code :
void chargement(int tab**,int* hauteur ,int* largeur) {//initialisation du tableau a 0
int i = 0, j = 0;
for (i = 0; i < hauteur; i++) {
for (j = 0; largeur < 7; j++) {
tab[i][j] = 0;
}
}
}
ici mes variable hauteur et largeur ne sont pas defini comment faire pour corriger sa ?
dans mon projet c j'ai quelque variable qui ne sont pas définie alors que je les transmet dans la fonction
voici le code :
void chargement(int tab**,int* hauteur ,int* largeur) {//initialisation du tableau a 0
int i = 0, j = 0;
for (i = 0; i < hauteur; i++) {
for (j = 0; largeur < 7; j++) {
tab[i][j] = 0;
}
}
}
ici mes variable hauteur et largeur ne sont pas defini comment faire pour corriger sa ?
Configuration: Windows / Chrome 77.0.3865.90
2 réponses
-
edit j'ai vue que dans le deuxième for il y avais un soucie que j'ai corriger (les variables sont toujours indéfini)
-
Salut Fidio,
Quel est le message de ton compilateur ? Il est étonnant qu'il se plaigne de variables "non définies".
Par contre, si tab est un pointeur de pointeur sur char, tu le déclaresint ** tab
et pasint tab**
, qui n'a syntaxiquement pas de sens dans un prototype et certainement, ton compilateur a dû te l'indiquer.
Au sujet de hauteur et largeur, si tu indiques dans ton prototype que tu passes des pointeurs surint
, tu dois les déréférencer pour les utiliser commeint
dans ta fonction. Donc : dans ta boucle for, tu dois comparer ton compteuri
à*hauteur
. Sinon, avec ton code, ton compilateur a dû t'avertir que tu comparais un entier avec un pointeur, ce qui n'a la plupart du temps pas de sens. Là aussi, pas de message concernant des "variables non définies".
Cependant, dans ton cas ta fonction ne dois pas modifier la valeur des entiers hauteur et largeur. Il n'y a donc aucune raison que tu passes des pointeurs sur ces entiers et tu devrais seulement passer desint
, et non desint *
et ne pas t'embêter avec la nécessité de les déréférencer.
Enfin, note que pour mettre à zéro une zone mémoire, il y amemset
qui te permet de mettre à zéro des zones de mémoire contiguës, et, en amont, si ta mémoire est allouée avecmalloc
, et que tu as besoin de la mettre à zéro une seule fois, tu peux le faire en utilisantcalloc
au lieu demalloc
.