Difference entre structure, pointeur, tableau (langage C).
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Difference entre structure, pointeur, tableau (langage C).



  1. #1
    deyni

    Difference entre structure, pointeur, tableau (langage C).


    ------

    Bonjour,

    j'ai du mal à comprendre la difference entre ces trois élements. De ce que j'ai cru comprendre:

    structure/tableau, une structure est un tableau de variables pouvant être de differents type. Dans une structure on peu mettre du char, int....Contrairement à la structure.

    tableau/pointeur : là, je ne fais pas la difference, si ce n'est peut-être létat de la mémoire. On déclare un tableau avec une taille(soit par un #define, soit par un calloc), alors que le pointeur non.

    pointeur/structure: une structure n'est qu'un ensemble de pointeur.




    Je ne comprends pas tout. Si quelqu'un pouvait m'expliquer mes erreurs.

    Merci.

    -----
    Deynid'oiseaux partout !! :rire:

  2. #2
    lou_ibmix_xi

    Re : Difference entre structure, pointeur, tableau (langage C).

    Ouch c'est confu, je pense qu'il est grand temps de potasser un bouquin de C...
    La différence entre structure, pointeur et tableau: ce sont trois choses différentes! (quelle est la différence entre une chaussure et un pigon ?)

    -un pointeur n'est qu'une adresse, le "*" dans la déclaration devient un modificateur de type:
    Code:
    int* x;
    déclare la variable x qui est de type pointeur sur int. Pour accéder au contenu du pointeur (déréférencer), on utilise l'opérateur "*", ainsi "*x" est le contenu x, donc l'entier pointé par l'adresse x, donc "*x" est de type entier. A l'inverse, si tu déclares "int y;", alors l'opérateur "&" te permet de récupérer l'adresse, ainsi "&y" est de type pointeur sur entier.

    -un tableau, c'est un agrégat de plusieurs éléments d'un même type. Tu accèdes aux éléments de ton tableau par leur index grâce à l'opérateur "[ ]". Le type des éléments peut être n'importe quoi, notamment "pointeur sur", "tableau de", structure ...

    -une structure est un agrégat de plusieurs éléments de type pouvant être différents (mais pas nécessairement), tu accèdes à un élément par le nom du champ que tu lui as donné grâce à l'opérateur "." ou "->".

    Un pointeur est équivalent à l'adresse du 1er élément d'un tableau uniquement (je crois) lors d'un passage en paramètre à une fonction.

  3. #3
    Zartan

    Re : Difference entre structure, pointeur, tableau (langage C).

    Bonjour,

    structure:

    struct a { char a; short s ; char* p ; }

    on a en mémoire (par exemple) :

    adresse 0: a sur 1 octet
    adresse 1: s sur 2 octets
    adresse 3: p sur 4 octets

    La taille de la structure est de 7 octets. C'est le cas naïf, voir ce lien pour ce qui se passe quand les données sont alignées : http://fr.wikipedia.org/wiki/Alignement_en_mémoire

    Avant que les processeurs aient des systèmes de cache on pouvait dire des pointeurs que c'étaient des adresses mémoire. C'est toujours plus ou moins vrai sauf qu'on ne peut plus faire n'importe quoi avec quand les données sont dans le cache, comme par exemple du code auto-modifiant : http://en.wikipedia.org/wiki/Self-mo...embly_language

    Normalement en C quelle que soit la variable v de type t, on obtient son adresse avec &v, et on peut stocker cette adresse dans un pointeur p de type t*

    p[1] correspond à p+1 et donc à l'adresse &v + sizeof(t) ; C'est pour cela qu'on utilise les pointeurs comme des tableaux mais ce n'en sont pas.


    Un tableau c'est une collection de données (structures, pointeurs, ou types scalaires).

    Contrairement à un pointeur, un tableau est alloué statiquement ou dans la pile si c'est un tableau local à une fonction : http://fr.wikipedia.org/wiki/Allocation_de_mémoire

    Ce qu'il faut retenir c'est que les tableaux sont alloués en mémoire et qu'un pointeur indique une adresse mémoire.

  4. #4
    kwariz

    Re : Difference entre structure, pointeur, tableau (langage C).

    bonjour,

    je comprends mieux les problèmes que tu as pour le sujet Suppression d’élément dans un tableau, langage C.
    J'ai l'impression, mais peut-être me trompe-je, qu'il y a un flou aussi entre type et variable, non ?
    Ce sont tes premiers pas en programmation ? Tu suis un cours ou c'est personnel comme démarche ?

  5. A voir en vidéo sur Futura
  6. #5
    deyni

    Re : Difference entre structure, pointeur, tableau (langage C).

    Bonjour,

    merci de vos explications. C'est OK.
    Je vois mieux le truc.

    Sinon, je ne confond pas type et variable.
    Type, c'est tout ce qui est: int, char, float, double short, long
    Et la variable, c'est ce qu'on a déclaré après le int.
    Deynid'oiseaux partout !! :rire:

  7. #6
    kwariz

    Re : Difference entre structure, pointeur, tableau (langage C).

    Citation Envoyé par deyni Voir le message
    Bonjour,
    ...
    Sinon, je ne confond pas type et variable.
    Type, c'est tout ce qui est: int, char, float, double short, long
    Et la variable, c'est ce qu'on a déclaré après le int.
    Bonjour,

    je disais ça à cause de ta phrase «une structure est un tableau de variables pouvant être de differents type». Quand tu as quelquechose du genre :
    Code:
    struct personne {
      char* prenom;
      char* nom;
      int age;
    };
    prenom, nom et age ne sont pas des variables, ce sont des champs (même si age vien après int).
    struct personne est un type que tu peux instancier (=créer une variable de ce type) en faisant :
    Code:
    struct personne Kwariz;
    Kwariz sera une variable de type struct personne possèdant plusieurs champs ...

  8. #7
    deyni

    Re : Difference entre structure, pointeur, tableau (langage C).

    Ok merci bien.

    Je me suis un peu embrouiller lorsque j'ai fais un exercice de pointeur sur tableau, pointeur de pointeur, triple pointeur....
    Deynid'oiseaux partout !! :rire:

  9. #8
    kwariz

    Re : Difference entre structure, pointeur, tableau (langage C).

    oui ... ça se comprend, ce sont des notions parfois un peu complexes à apprendre surtout en c. À force de faire des exos tout ça va devenir de plus en plus clair et automatique

Discussions similaires

  1. utiliser un pointeur (langage C) dans un PIC "expecting an identifier"
    Par invitebdf64909 dans le forum Électronique
    Réponses: 14
    Dernier message: 12/02/2011, 08h37
  2. Pointeur en langage C
    Par deyni dans le forum Programmation et langages, Algorithmique
    Réponses: 38
    Dernier message: 26/01/2011, 18h19
  3. Différence entre structure et réseau cristallin
    Par Mars Epiphone dans le forum Physique
    Réponses: 0
    Dernier message: 09/02/2008, 21h45
  4. Problème Langage C Structure, Pointeur, ...
    Par invite3e43df7f dans le forum Logiciel - Software - Open Source
    Réponses: 17
    Dernier message: 01/04/2006, 20h14
  5. Langage C : pointeur sur une fonction en argument ...
    Par invite1a99f682 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 27/07/2005, 10h29