Comprendre structure en C

Résolu/Fermé
ludo - 22 mai 2007 à 10:19
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 11 oct. 2007 à 01:25
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
22 mai 2007 à 10:56
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
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
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
#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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
6 oct. 2007 à 00:59
Salut,

ça pourra peut être t'aider
c maudites structures#20
0
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
6 oct. 2007 à 17:49
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 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
7 oct. 2007 à 02:03
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
7 oct. 2007 à 09:07
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 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
7 oct. 2007 à 11:38
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
7 oct. 2007 à 11:42
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 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
11 oct. 2007 à 00:02
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 oct. 2007 à 01:25
Merci ;-)
0