Langage C: pointeurs, pointeurs sur fonctions
Fermé
razuki
Messages postés
242
Date d'inscription
lundi 17 décembre 2007
Statut
Membre
Dernière intervention
5 décembre 2012
-
17 juin 2011 à 11:36
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 29 juin 2011 à 20:07
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 29 juin 2011 à 20:07
A voir également:
- Langage C: pointeurs, pointeurs sur fonctions
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage pascal - Télécharger - Édition & Programmation
- Dev-Pascal - Télécharger - Édition & Programmation
2 réponses
arthurik
Messages postés
166
Date d'inscription
dimanche 27 décembre 2009
Statut
Membre
Dernière intervention
22 juin 2015
14
Modifié par arthurik le 26/06/2011 à 19:13
Modifié par arthurik le 26/06/2011 à 19:13
Salut
1) Une variable static comme tu le dis, n'est pas vraiment variable si tu veux, c'est une adresse dans la mémoire qu'on appelle le TAS, et se promene dans le programme avec seulement l'adresse ou on appelle plutot un pointeur sur une variable.
Si je connait l'adresse de cette variable j'ai pas besoin d'etre dans la fonction où elle a été créée, mais en connaissant l'adresse on peut savoir la valeur de la variable qui se trouve à cette adresse. Donc on alloue une adresse de méoire dans les cases de mémoire.
2) De meme ici comme les variable les foncions aussi elles on des adresses mémoires.
On définit les adresses des fcontions donc pointeur sur une fonction, ainsi on peux lancer n'importe quelle fontion de meme types d'argumetns et de retour biens sur.
C'est pratique pour une programme de dessin ou on choisit des outils, donc on change les adresse de la fontion à lancer et du coup le code ne change pas.
Callback c'est pour lancer cette fonction à une adresse.
3)Ici ce que tu demande c'est connaitre la taille en octets occupé par cette adresse sur la fonction.
sizeof permet de savoir la taillle en octet occupé par chaque type de variable.
Voilà
Pour la partie 2 j'ai pas trop précisé car l'affectation d'une fonction à une adresse se fait en deux etapes. Si tu veux plus, ya un topic sur siteduzero.
http://www.siteduzero.com/tutoriel-3-314203-les-pointeurs-sur-fonctions.html
J'espere de t'avoir aidé.
1) Une variable static comme tu le dis, n'est pas vraiment variable si tu veux, c'est une adresse dans la mémoire qu'on appelle le TAS, et se promene dans le programme avec seulement l'adresse ou on appelle plutot un pointeur sur une variable.
Si je connait l'adresse de cette variable j'ai pas besoin d'etre dans la fonction où elle a été créée, mais en connaissant l'adresse on peut savoir la valeur de la variable qui se trouve à cette adresse. Donc on alloue une adresse de méoire dans les cases de mémoire.
2) De meme ici comme les variable les foncions aussi elles on des adresses mémoires.
On définit les adresses des fcontions donc pointeur sur une fonction, ainsi on peux lancer n'importe quelle fontion de meme types d'argumetns et de retour biens sur.
C'est pratique pour une programme de dessin ou on choisit des outils, donc on change les adresse de la fontion à lancer et du coup le code ne change pas.
Callback c'est pour lancer cette fonction à une adresse.
3)Ici ce que tu demande c'est connaitre la taille en octets occupé par cette adresse sur la fonction.
sizeof permet de savoir la taillle en octet occupé par chaque type de variable.
Voilà
Pour la partie 2 j'ai pas trop précisé car l'affectation d'une fonction à une adresse se fait en deux etapes. Si tu veux plus, ya un topic sur siteduzero.
http://www.siteduzero.com/tutoriel-3-314203-les-pointeurs-sur-fonctions.html
J'espere de t'avoir aidé.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
26 juin 2011 à 22:02
26 juin 2011 à 22:02
1/ dans le segment .bss si initialisé à 0 ou .data sinon
2/ il s'agit d'un pointeur sur fonction qui a pour argument un pointeur (sur une fonction avec pour argument un tableau de pointeur sur des entiers) et un double pointeur.
3/ le sizeof renvoie la taille en byte de la variable ou du type passé en paramètre.
Cdlt,
2/ il s'agit d'un pointeur sur fonction qui a pour argument un pointeur (sur une fonction avec pour argument un tableau de pointeur sur des entiers) et un double pointeur.
3/ le sizeof renvoie la taille en byte de la variable ou du type passé en paramètre.
Cdlt,
arthurik
Messages postés
166
Date d'inscription
dimanche 27 décembre 2009
Statut
Membre
Dernière intervention
22 juin 2015
14
Modifié par arthurik le 27/06/2011 à 16:19
Modifié par arthurik le 27/06/2011 à 16:19
si tu sais pas que octet = byte alors inutile de te dire ce que c'est le tas.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
27 juin 2011 à 18:25
27 juin 2011 à 18:25
Sauf qu'un byte est un groupe de bits (souvent 8 mais pas forcement). La traduction la plus juste est multiplet. D'ailleurs, la norme ISO précise bien qu'un char occupe un byte d'au moins 8 bits. Sur google, tu trouveras de la doc à ce sujet.
Pour les variables statiques, ce n'est certainement pas dans le tas qui est réservé à l'allocation dynamique. Ces variables sont stockées dans les segments data ou bss selon leur initialisation.
Pour les variables statiques, ce n'est certainement pas dans le tas qui est réservé à l'allocation dynamique. Ces variables sont stockées dans les segments data ou bss selon leur initialisation.
arthurik
Messages postés
166
Date d'inscription
dimanche 27 décembre 2009
Statut
Membre
Dernière intervention
22 juin 2015
14
Modifié par arthurik le 27/06/2011 à 23:03
Modifié par arthurik le 27/06/2011 à 23:03
BYTE bit octet l'important c'etais pas ça, mais j'avoue que je savais pas l'histoire de variabilité de bites,ça dépend du compilateur. Par rapport à DOC j'ai pas vraiment besoin de tout ça. Car la pratique definie mes propres documentation si tu vois ce que je veux dire. Il faut avoir son propre style de dire les choses pour avoir un avantage. Attention c mon avis et à ne pas discuter :D!
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
27 juin 2011 à 23:34
27 juin 2011 à 23:34
Il faut avoir son propre style de dire les choses pour avoir un avantage.
Certes, mais expliquer avec ses mots n'empêche pas de donner une réponse juste.
Car en répondant que sizeof renvoie la taille en octet c'est faux. Même si c'est ta façon de dire.
De même que dire l'allocation de variables statiques se passe dans le tas est faux.
Mais, l'important c'est que tu te comprennes et que tu saches ce que tu fais ^^.
Certes, mais expliquer avec ses mots n'empêche pas de donner une réponse juste.
Car en répondant que sizeof renvoie la taille en octet c'est faux. Même si c'est ta façon de dire.
De même que dire l'allocation de variables statiques se passe dans le tas est faux.
Mais, l'important c'est que tu te comprennes et que tu saches ce que tu fais ^^.
arthurik
Messages postés
166
Date d'inscription
dimanche 27 décembre 2009
Statut
Membre
Dernière intervention
22 juin 2015
14
27 juin 2011 à 23:38
27 juin 2011 à 23:38
Je parie qu'il a rien pigé de ce que t'a dit alors ta réponse elle peut etre juste tant qu'elle veux.Tout ce que je dis c'est quil faut expliquer pas dire:
"dans le segment .bss si initialisé à 0 ou .data sinon "
Je pense qu'on va pas continuer..
"dans le segment .bss si initialisé à 0 ou .data sinon "
Je pense qu'on va pas continuer..
Modifié par fiddy le 26/06/2011 à 21:58
3/ sizeof n'est pas la taille en octet mais en byte.