IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[Debutant] Pointeurs et fonctions


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Par défaut [Debutant] Pointeurs et fonctions
    Bonjour a tous, je developpe actuellement une petit application de Traitement d'image.
    Pour l'instant j'ouvre et peux sauvegarder mes images.

    Je souhaite faire un petit traitement comme un seuillage tout bete par exemple.

    J'ai une source qui m'inspire, pour tacher de comprendre cela je la lis.

    Mais dans cette source les pointeurs sont utilisés, donc je me suis documentés sur les pointeurs en C#, dans un cours j'ai lu que les pointeurs était plus ou moins utilisé dans des tableaux.

    Une proposition :

    Est ce que les pointeurs permettent de faire ca?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Tab1 = []
    Tab2= []
     
    *ptr = Tab2
     
    Tab1[*ptr] = Tab1 [Tab2]
    C'est juste des lignes afin de comprendre sans syntaxe particuliere.

    En gros est ce que les pointeurs peuvent permettre de faire des tableaux de tableaux chose qui est peut etre impossible.


    Mais dans un cours de C++ j'ai lu aussi qu'il existait les pointeurs de fonctions.

    Est ce qu'ils existent en C# et si oui Clairement quel est l'avantage d'appeler un fonction par un pointeur plutot que par elle meme? (Gain de temps surement)

    Voila je sais que dans la tete de plusieurs Programmeurs les pointeurs sont toujours source de confusion ou d'imcomprehension.

    Et rassurer moi, LES POINTEURS pointent bien l'adresse mémoire ou est situé l'objet pointé?

    Je vous remerci de votre attention.
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    l'équivalent des pointeurs de fonctions s'appelle les "delegate" en C#...

    Et oui, tu peux utiliser les pointeurs en C#, mais seulement en "enrobant"
    ton code d'un

    unsafe{
    ... ton code
    }

    Car les pointeurs ne sont pas CLR compliant (en clair, le code managé refuse
    de jouer avec les pointeurs).. en mettant le mot-clé "unsafe", tu dis au compilateur.. laisse moi faire ce que je veux, j'assume mes "conneries"

    Donc, apres, pointeurs sur tableaux de tableaux, etc... bien sur, c'est possible

    The Monz, Toulouse

  3. #3
    Membre émérite
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Par défaut
    OK merci deja pour le mots de vocubulaire ca va me permettre de faire de plus ample recherche.

    Je vous tiens au courant.

    Et pouvez vous m'expliquer cette ligne de code grossierement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte * p = (byte *)(void *)Scan0;
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    pardon, j'vois pas trop l'interet du double cast

    faire (byte*) toto = Reviens à dire qu'on "cast" toto en byte* (donc qu'on considere toto comme un pointeur de byte

    donc, faire (byte*)(void*)Scan0 , j'vois pas trop le but d'un double cast

    The Monz, Toulouse

  5. #5
    Membre émérite
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Par défaut
    Le casting c'est bien ca : Extraire un partie voulue d'un objet pour le mettre dans un autre.

    Comme par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    double a= 26.9;
    int partentier =(int)a;
     
    print partentier;
    26
    Donc faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte *p = (byte *)Scan0;
    Revient a faire pointer p sur l'adresse de Scan0??

    Oulalalala.... C'est ou trop clair dans ma tete ou pas du tout...lol
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    exactement....

    L'interet des pointeurs resident essentiellement dans le fait de passer un
    lien sur une variable...

    En gros, tu dis à ta fonction, "Tu trouveras mes données ici.. mais fait
    gaffe.. car c'est un pointeur"...

    Qui dit pointeur dit : acceder directement à la référence "dans la mémoire"

    Passer un pointeur revient à accepter que sa données soit modifiée par l'utilisateur du dit pointeur....

    L'interet est de ne pas à avoir à faire une copie des données quand on veut
    qu'elles soient traités....

    Et la différence entre pointeur et reference en C++ est que d'un coté, tu
    autorises (avec la reference) à modifier la valeur contenu dans la case mémoire alors qu'avec le pointeur, comme tu donnes l'adresse de la
    case mémoire, tu peux dircetement changer ET l'adresse ET le contenu...

    Ca s'éclaircit ?

    The Monz, TOulouse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [debutant] correspondance JAVA C++ pour pointeur de fonction
    Par davidoff_tls dans le forum Langage
    Réponses: 7
    Dernier message: 15/04/2004, 09h13
  2. Declaration de fonction retournant un pointeur sur fonction
    Par pseudokifaitladifférence dans le forum C
    Réponses: 5
    Dernier message: 11/08/2003, 19h37
  3. Matrice de pointeurs de fonctions
    Par sebduth dans le forum C
    Réponses: 15
    Dernier message: 18/07/2003, 14h03
  4. [Kylix] Pointeur de fonctions
    Par _dack_ dans le forum EDI
    Réponses: 1
    Dernier message: 03/07/2003, 10h17
  5. pointeur de fonction
    Par kardath dans le forum C
    Réponses: 4
    Dernier message: 28/12/2002, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo