Comprendre structure en C

Résolu
ludo -  
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Salut,

Je voudrais savoir si une structure (en C) a une valeur de départ.
Je m'explique:

ex: Struct toto{

int x;
float y;
void tata;
...
}




Si je fais toto=Une_autre_variale;

ou if (!toto)

Es que quelqu'un sauré ce que cela veut dire?

Merci

12 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Non cela n'a pas une valeur de départ. Cependant il s'agit d'un type donc cela ne risque pas de plaire au compilateur. De plus, il est d'usage de commencer par une lettre en majuscule le nom de ta structure. Ainsi tu n'aura plus ce problème.
0
emine
 
je crois qu'il faudrait initialisé une autre variable de mm type structure puis faire une initialisation mais jamais dans un champ on ne peut initialisé mais parcontre tu peux utiliser un tableau et donner le nombre d'élements de te tableau
0
Kay
 
Bonjour,
j'ai un énorme problème! En fait je dois rédiger une structure en C mais je ne comprends pas comment ça se présente. Que dois - je mettre dans "int main", où dois écrire le nom de ma structure.nom de ma varible et surtout comment ça se présente lors de l'exécution du programme? C'est hyper urgent. Merci d'avance pour les réponses!!!
0
BloodyAngel
 
#include...
#include...

main()
{
struct mastruct
{
int var1;
string var2;
}

suite du programme...
}

Tu peux déclarer ta structure dans ou hors du main (ou de n'importe quelle fonction) suivant que tu veux en faire une structure globale ou locale.
Pour y faire appel, tu fais simplement mastruct.var1 par exemple.

Enfin je crois...
ça fait longtemps que j'ai plus fais du C mais ça doit être comme ça...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

ça pourra peut être t'aider
c maudites structures#20
0
tempe
 
Bonjour,
merci de m'avoir répondu aussi vite mais ça ne marche toujours pas. Alors je vous inscrit le programme que j'ai rédiger et peut être vous trouverez tout ce qui ne va pas :

#include <stdio.h>

struct complexe z_1{
int re;
int im;
};



struct complexe z_1 = {2, 5};



int main() {


printf("%d\n", z_1.re);
printf("%d\n", z_1.im);




return 0;

}

Merci d'avance pour votre réponse!!!
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

tu peux faire comme ça
#include <stdio.h>

struct complexe{
        int re;
        int im;
};

struct complexe z_1 = {2, 5};
int main()
{
        printf("%d\n", z_1.re);
        printf("%d\n", z_1.im);
        return 0;
}
ou comme ça
#include <stdio.h>

struct complexe {
        int re;
        int im;
} z_1 = {2, 5};

int main()
{
        printf("%d\n", z_1.re);
        printf("%d\n", z_1.im);
        return 0;
}
--
lami20j
0
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Ou encore mieux (car au final on ne veut ni donner un valeur par défaut à un complexe, ni déclarer de variable globale, ni être dépendant de l'ordre des champs de la structure) :
#include <stdio.h>

struct complexe {
        int re;
        int im;
};

int main(){
        complexe z;
        z.re = 2;
        z.im = 2;
        printf("%d\n", z_1.re);
        printf("%d\n", z_1.im);
        return 0;
}

Bonne chance
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut Miss,

ni déclarer de variable globale,
ben, alors, il fallait allait jusqu'au bout ;-)
#include <stdio.h>


int main(){
struct complexe {
        int re;
        int im;
};
        struct complexe z_1;
        z_1.re = 2;
        z_1.im = 2;
        printf("%d\n", z_1.re);
        printf("%d\n", z_1.im);
        return 0;
}


0
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Non non justement la structure tu peux en avoir besoin ailleurs que dans le main donc tu la laisse dehors. Par contre il est vrai qu'en C il faut mettre "struct complexe" ou faire un typedef (contrairement au C++).

Bonne chance
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
ni déclarer de variable globale,et puis tu dit
en avoir besoin ailleurs que dans le main donc tu la laisse dehors
alors il s'agit bien d'une déclaration globale, et l'initialisation n'empêchera pas de la modifier ;-)
0
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Le type est global mais pas la structure. Tu peux instancier plusieurs objets de ce type sans aucun problème. La déclaration de la structure doit être globale, mais pas la déclaration de la variable. Quand tu mets des valeurs au moment de déclarer le type de la structure, tu ne fais que spécifier les valeurs par défaut avec lesquelles seront initialisées les instances de cette structure.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Merci ;-)
0