Accueil > Forum > > > > abération pointeurs de fonction ?
abération pointeurs de fonction ?
vendredi 8 juin 2007 à 23:39:28 |
abération pointeurs de fonction ?

acx01b
|
bonjour, quelqu'un pourrait m'expliquer ce que signifie ce code pour nos compilateurs ? int mafonction () { return 54; } int main() { int (*func)() = mafonction; int k = (************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************func)(); printf(" %d\n",k); } (chez moi ça affiche 54 sans problème)
|
|
samedi 9 juin 2007 à 08:22:30 |
Re : abération pointeurs de fonction ?

vicenzo
|
Je pense que ton code devait plutôt être ca :
int mafonction() { return 54; }
int main() { // déclaration d'un pointeur sur une fonction de signature égale à celle de mafonction
int (*func)() = mafonction;
// exécution de la fonction via le pointeur de fonction int k = (*func)();
printf(" %d\n",k); }
|
|
samedi 9 juin 2007 à 08:39:05 |
Re : abération pointeurs de fonction ?

coucou747
|
Salut dans ce cas, c'est equivalent a k=mafonction(); en gtk, en C/Xchat, et autre, ca sert pour les callbacks. La derniere fois que j'ai fait ca, j'avais un perso a faire bouger, et une fonction appellee a chaque tour, cette fonction pouvait appeller 5 autres fonctions, selon que le perso soit gentil, phagocyteur, anticorps, visiteur etc.. certains se servent de l'heritage pour ne pas avoir a manipuler ces pointeurs une recherche sur exalead vous aurait peut-etre evite de poser cette questionIn a dream, I saw me, drop dead... U were there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy
|
|
samedi 9 juin 2007 à 10:47:21 |
Re : abération pointeurs de fonction ?

acx01b
|
salut
vous n'avez peut-être pas compris ma question
vicenzo: une fonction c'est déja une adresse il faut donc faire
int mafonction() { return 54; }
int main() { int (*func)() = mafonction; int k = func(); printf(" %d\n",k); }
mais qu'en est-il des étoiles dans mon code ?
|
|
samedi 9 juin 2007 à 10:52:20 |
Re : abération pointeurs de fonction ?

coucou747
|
Salut a part si tu t'es endormi sur le clavier, et que le lendemain, par erreur tu ai enregistre... je ne vois pas d'ou peuvent vennir ces etoiles.... je ne connais aucun humain capable de taper un truc qui renverrait un pointeur sur pointeur (sur pointeur ) {1500} de fonction... une recherche sur exalead vous aurait peut-etre evite de poser cette questionIn a dream, I saw me, drop dead... U were there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy
|
|
samedi 9 juin 2007 à 13:00:25 |
Re : abération pointeurs de fonction ?

luhtor
|
D'ailleurs a ce sujet, j'avais poster une fois, car le code suivant marche également:
int (*func)() = &mafonction; int k = func();
|
|
samedi 9 juin 2007 à 14:19:14 |
Re : abération pointeurs de fonction ?

acx01b
|
ça c'est normal luhtor
c'est l'idée qu'une fonction est à la fois l'adresse du prologue de la fonction, et à la fois l'entité "fonctionnelle" (sizeof mafonction = 1 tout comme sizeof(void) !!!) l'adresse de l'entité fonctionnelle étant l'adresse du prologue....
de la même manière
int tab[15]; ( tab == &tab ) est Vrai
|
|
samedi 9 juin 2007 à 15:07:27 |
Re : abération pointeurs de fonction ?

luhtor
|
Hm j'ai eu peur. J'ai cru que ton exemple allait compiler.
int tab[15]; if (tab == &tab)
Provoque une erreur de compilation et heureusement puisque les types sont différents.
|
|
samedi 9 juin 2007 à 17:47:14 |
Re : abération pointeurs de fonction ?

acx01b
|
l'idée est que c'est un code C et pas un code C++ :)
chez moi ça fonctionne (avec gcc, mingw, vc++)
|
|
dimanche 10 juin 2007 à 11:24:16 |
Re : abération pointeurs de fonction ?

vicenzo
|
acx01b : Pour info, le code que j'ai mis était ton code débarrassé des ******** en trop. Merci de m'apprendre d'une fonction correspond à une adresse mémoire... C'es trop sympa ! Pour info je faisais déja du C que tu apprenais pythagore au collège... Sinon les expressions k = (*func)() et k = func() sont toute les deux valables car elle exécutent toute les deux mafonction()
Pour ton information la vrai facon de faire est (*func)() ...
func() n'est qu'une forme de la première acceptée par la norme pour 'faire + simple'.
Donc avant de donner des lecons, revise ta norme !!!
Bonne continuation....
|
|
Cette discussion est classée dans : fonction, int, pointeurs, mafonction, abération
Répondre à ce message
Sujets en rapport avec ce message
creer une fonction retournant un tableau [ par billcala ]
j'essaie de créer une fonction qui doit initialiser un tableau d'entiers : le code que je fais est :int mafonction()[8];using namespace std;int mafonc
remise a zero de fonction [ par galian ]
j'utilise une fonction de gestion aléatoire de chiffre type:int fonction (int,int)cette fonction renvoi une variable res;dans main() j'utilise cette f
Pour les doués, moi j'en peu plus ! [ par sena ]
Salutje voudrais en fait faire un passage de paramètre a une fonction dont un a une valeur par défaut. (puis inclure ca dnas une DLL)Par exemple une f
scanf() [ par clb ]
bonjour à tous,j'ecris par exemple :int fonction(){ if(true) return 0; else return -1}dans main, si cette fonction retourne 0,alors j'appli
Fonction récursive simple en C ANSI [ par pedu ]
Bonjour à tous,je suis un jeune développeur et j'aimerai avoir un exemplesur l'utilisation d'une fonction récursive simple en Langage Cint facto(int);
Au secour ! [ par slashparof ]
Au secour! Je ne comprend vraiment pas le problème visual studio me compile cette fonction correctement, mais mon programme cause une erreur quand j'a
Tableau de structure [ par tomsawyerbelgique ]
Bonjour suriez-vous me dire comment fait-on pour passer un tableau de structure dans une fonction:struct student { char nom[10]; int nbcot
ProB avec la fonction int remove (const char*) [ par Avalon10101 ]
_-=AvAloN=-_Jai un petit prob avec cette fonction :Je cré mon prog il na aucune erreur é il est donc pré à etre exécuter pour suprimer un fichier test
tableau a double entrée alloué dynamiquement [ par amortlintelligence ]
Voila j'aurais voulu utiliser un tableau (tableau de tableau) dans une fonction. Je pense qu'il faut donc que je le crée dynamiquement avec un code du
Pb de class [ par SfyLer ]
Imaginons :class teste{public:void fonction();void fonction2();};int teste::fonction() {int a = 1;return 0;}int teste::fonction2() {//ici j'aimerais r
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|