Fonction correcte en C-structure mais
bernard
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
Bonjour, j'ai écrit un petit programme qui m'initialise très bien les cases du tableau d'une variable à 0, le voici:
#include <stdio.h>
#include <stdbool.h>
#define MAX 10
struct garage {
int vehicule[MAX];
_Bool presence[MAX];
};
void initGarage(struct garage g){
int i;
for(i=0;i<MAX;i++){
g.presence[i] = 0;
}
}
int main(){
int i;
struct garage g;
initGarage(g);
for(i=0;i<MAX;i++){
printf("%d ", g.presence[i]);
}
return 0;
}
Mais le problème c'est que le main m'affiche des valeurs aléatoires au lieu des 0, serais ce par hasard une histoire de pointeurs manquant dans le main svp?
merci
#include <stdio.h>
#include <stdbool.h>
#define MAX 10
struct garage {
int vehicule[MAX];
_Bool presence[MAX];
};
void initGarage(struct garage g){
int i;
for(i=0;i<MAX;i++){
g.presence[i] = 0;
}
}
int main(){
int i;
struct garage g;
initGarage(g);
for(i=0;i<MAX;i++){
printf("%d ", g.presence[i]);
}
return 0;
}
Mais le problème c'est que le main m'affiche des valeurs aléatoires au lieu des 0, serais ce par hasard une histoire de pointeurs manquant dans le main svp?
merci
A voir également:
- Fonction correcte en C-structure mais
- Fonction si et - Guide
- Logiciel calcul structure bois gratuit - Télécharger - Architecture & Déco
- Vérifier si une phrase est correcte - Accueil - Google
- Fonction miroir - Guide
- Structure d'un rapport de stage - Guide
1 réponse
Salut,
En fait, c'est que tu ne modifies pas la structure de ton main mais une copie.
Pour initialiser, il te faudra passer l'adresse.
Voici une version corrigée :
Cdlt,
En fait, c'est que tu ne modifies pas la structure de ton main mais une copie.
Pour initialiser, il te faudra passer l'adresse.
Voici une version corrigée :
#include <stdio.h>
#include <stdbool.h>
#define MAX 10
struct garage {
int vehicule[MAX];
_Bool presence[MAX];
};
void initGarage(struct garage *g){
int i;
for(i=0;i<MAX;i++){
(*g).presence[i] = 0;
}
}
int main(){
int i;
struct garage g;
initGarage(&g);
for(i=0;i<MAX;i++){
printf("%d ", g.presence[i]);
}
return 0;
}
Cdlt,
En C, le passage par référence n'existe pas.