allocation strucure et pointeur
Bonjour, je suis nouveau dans se site et je me permet de vous exposer mon problème, Voici les différentes question de l'exercice :
Nous souhaitons manipuler une structure de données constituée d'un tableau de pointeurs sur des structures de type Element(type défini dans la première question de cet énoncé).Cette structure de données sera donc de type Element **.
Nous appelons taille de cette structure de données la taille de son tableau de pointeurs. Nous appelons k-ème élément de cette structure de données la structure dont l'adresse figure dans la case d'indice k du tableau de pointeur de cette structure de données.
1. Écrire le code permettant de définir une structure de nom Element qui comporte deux champs de type int et de noms c1 etc2.
Ma réponse ( je ne suis pas sur pour la notation des pointeurs) :
Code:
1 2 3
| typedef struct Element ** {
int a,b;
char* c1,c2;} Element; |
2.Écrire la fonction de prototype Element **creer_structure(int n) qui permet d'allouer et d'initialiser un telle structure de données de taille n. Cette fonction doit initialiser tous les champs des structures de type Element à 0 et retourner la structure de données allouée. On prendra soin d'éviter toute erreur de segmentation .
Ma reponse :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| Element **creer_structure(intn){
Element **tab = malloc(n*sizeof(Element));
if (tab == NULL){
printf("Probleme d'allocation \n");
return NULL;}
for(int i =0; i <=n;i++){
tab[i] = 0; }
return tab;
} |
3.Écrire la fonction de prototype void liberer_structure(Element **sd, int n) qui permet de libérer l'espace mémoire occupé par la structure de données sd de taille n. Vous prendrez garde que votre fonction ne présente pas de risque de fuite de mémoire.
Pour ca, je sais qu'il faut utiliser free() mais je sais pas comment l'utiliser xD.
4.Écrire la fonction de prototype void modifier_element_dans_structure(Element **sd, int n,int k, int a,int b) qui permet d'affecter respectivement les valeurs a et b aux champs c1 et c2 du k-ème élément de la structure de données sd de taille n. Vous prendrez garde que votre fonction ne puisse pas générer d'erreur de segmentation.