Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pointeur sur structure

27 réponses
Avatar
Québec
struct maStructure{
char data;
struct maStructure;
};
typedef maStructure MaStructure;
typedef MaStructure *MaStructure;

versFonction(& MaStructure);

Fonction(* MaStructure)

Et voici la question:

* MaStructure déréférence quoi? Quelle valeur?

data?


Jean Pierre

7 réponses

1 2 3
Avatar
Québec
sPtr->data ou l'adresse de la structure que réfère *sPtr.
J'opte pour cette dernière.
Si je printf("%c%", *sPtr);, j'obtiens la valeur de sPtr->data ??
oula, tu as tenté ?

oui bien sûr.


tout simplement car la norme assure que le premier élement d'une structure
a toujours la même adresse que la structure. Il n'y a pas de remplissage au

début d'une structure.
Voilà.

Jean


Avatar
Québec
"Emmanuel Delahaye" a écrit dans le message de
news:
(supersedes )

Québec wrote on 17/09/04 :
C'est comme cette ligne:
newPtr->nextPtr = *sPtr;

ça veut dire(et il, le livre, devrait le spécifier, enfin je le pense)?


Je pense qu'avant d'aborder des notions complexes commes les listes
chainées, tu devrais commencer par maîtriser les bases du C et par
conséquent les pointeurs.

Si tu avais étudié à fond le Kernighan & Ritchie, par exemple, tu
saurais que si 'p' est un pointeur initialisé, alors '*p' est la valeur à
l'adresse pointée.

Je l'ai acheté y a deux semaines.

C'est le B.A. BA du C.


Oui, Je sais ça.
int* p;
int b = 3;
p= &b;
* p déréférence la valeur de l'adresse &b c'est-à-dire 3;
|
............................................................................
...|

Mais je ne savais pas que *strucX contenait l'adresse de la première valeur
d'une structure.
Décidément Deitel&Deitel apprenez le c , intro a C++ et java ne vaut pas le
coup)(60 euros!)
C'est tellement pointilleux le C. Pas mon caractère du tout.(?Ce qui
précède n'est pas du C.)

Bon repos à tous et à la prochaine :-)

Jean


Avatar
Québec
Pas assez Ferré ou Brassens pour moi.

Essayez Richard Desjardins. Ça, c'est du calibre
http://www.surscene.qc.ca/musique/abbittibbi/

mais c pas du C.

Jean
--
http://jeanpierredaviau.com





"Pierre Maurette" a écrit dans le message de
news:
"Québec" a écrit:


"cedric" a écrit dans le message de
news:414b344f$0$303$
Mais foutez lui la paix enfin....


Merci à mon allié. Car en effet, ce n'est pas du C.

Il eut peut être été préférable que j'eusse pris mes 'wake up' avant de
poster t'en France.
Vous écoutez Linda Lemay ? (guaranted joke-free).

--
Pierre




Avatar
Anthony Fleury
Québec wrote:


sPtr->data ou l'adresse de la structure que réfère *sPtr.
J'opte pour cette dernière.
Si je printf("%c%", *sPtr);, j'obtiens la valeur de sPtr->data ??
oula, tu as tenté ?

oui bien sûr.



Faudrait voir quoi alors, parce que j'espère avoir été assez clair sur un
fait, sPtr->data n'a pas de sens, et provoquera une erreur de compilation
si cela apparait dans le code. Comme on l'a dit, sPtr est une ListNode**
donc faire sPtr->data cherche un membre data dans *sPtr, qui est un
ListNode* et non un ListNode. donc seul (*sPtr)->data a un sens.

Si je tente d'accéder à sPtr->data, mon compilateur (comme tous les
compilateurs je suppose) me répond :

test.c:11: error: request for member `data' in something not a structure or
union

Bon courage pour les listes chainées, mais un conseil, comme le disait
Emmanuel Delahaye, avant de s'attaquer à ce type de structure (listes,
arbre, tables de hachages, piles, files et j'en passe et des meilleurs) il
faut une bonne compréhension des pointeurs, des niveaux d'indirection et
s'être beaucoup entrainé sur ces points, sinon c'est pas la peine on se
perd direct.

Anthony
--
Alan Turing thought about criteria to settle the question of whether
machines can think, a question of which we now know that it is about as
relevant as the question of whether submarines can swim.
-- Dijkstra



Avatar
Anthony Fleury
Québec wrote:

Mais je ne savais pas que *strucX contenait l'adresse de la première
valeur d'une structure.


Attention tout de même au vocabulaire, parler de ` *strucX ' n'a aucun sens,
il faut simplement retenir que l'adresse d'une structure est la même que
l'adresse de son premier élement, en clair pas de bits de remplissage au
début d'une structure.

C'est surtout utilisé pour les protocoles ou les "types" des structures sont
identifiés par le premier byte de celle ci. Il suffit de recevoir un void*
et de caster comme il faut ensuite selon la valeur du premier byte (ou
comment faire de l'"héritage" en C).

Décidément Deitel&Deitel  apprenez le c , intro a C++ et java ne vaut pas
le coup)(60 euros!)


Un livre qui fait du C, du C++ et du Java ne peut pas être sérieux. D'une
part parce que si l'on veut apprendre le C et le C++ il faut bien séparer
les deux et que même si java et C++ sont deux langages ayant un paradigme
objet ils sont bien différents.

Anthony
--
Alan Turing thought about criteria to settle the question of whether
machines can think, a question of which we now know that it is about as
relevant as the question of whether submarines can swim.
-- Dijkstra

Avatar
Québec
Je m'en vais faire mes devoirs.

Jean
Avatar
Michel Billaud
"Québec" writes:

C'est tellement pointilleux le C.


Comme tout langage de programmation ça sert à dire à l'ordinateur
tout qu'il va faire. Si vous lui dites des conneries, il les fera.

Pas mon caractère du tout.


Allez à la case "responsable de service informatique" sans passer par
le case 'programmeur", ça vous rapportera beaucoup plus que 20000.

MB
--
Michel BILLAUD
LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792
351, cours de la Libération http://www.labri.fr/~billaud
33405 Talence (FRANCE)

1 2 3