Wikia

D Programming

Osservati speciali Ultime modifiche

Puntatori a funzione

Indice

Introduzione Modifica

Nei capitoli precedenti abbiamo fatto conoscenza con i puntatori, in quel caso puntavano a delle semplici variabili o all'inizio di un array, però i puntatori possono puntare anche a delle funzioni scritte da noi.

Il primo puntatore a funzione Modifica

Un puntatore a funzione si dichiara come una funzione normale, ma al posto del nome della funzione ci va la parola chiave function:

 void function() MyFunctionPointer;
 NOTA BENE
 Le funzioni devono SEMPRE essere globali o statiche.
import std.stdio;
 
/*Creiamo il nostro puntatore a funzione*/
void function() FuncPtr;
 
/*Una funzione che verrà chiamata col puntatore a funzione*/
void SayHello()
{
  writefln("Sono una funzione chiamata col puntatore");
}
 
int main(string[] args)        //Entry point del programma
{
  //Facciamo puntare il puntatore a funzione all'indirizzo di SayHello
  FuncPtr = &SayHello;
  //Chiamiamo la funzione che sta puntando
  FuncPtr();
 
  return 0; 
}
 Output:
 Sono una funzione chiamata col puntatore

Puntatori a funzione con parametri Modifica

I puntatori a funzione possono prendere pure parametri, come nelle funzioni, i parametri saranno separati da una virgola, quindi praticamente sarebbe:

 void function(type1 param1, type2 param2, type3 param3....) FuncPtr;

Ecco l'esempio precedente rivisto con i parametri:

import std.stdio;
 
/*Creiamo il nostro puntatore a funzione*/
void function(int a, int b) FuncPtr;
 
/*Una funzione che verrà chiamata col puntatore a funzione*/
void Sum(int a, int b)
{
  writefln("La somma e' : %d", a1 + a2);
}
 
int main(string[] args)        //Entry point del programma
{
  //Facciamo puntare il puntatore a funzione all'indirizzo di SayHello
  FuncPtr = ∑
  //Chiamiamo la funzione che sta puntando
  FuncPtr(60, 40);
 
  return 0; 
}
 Output:
 La somma e': 100

Puntatori a funzione che restituiscono in valore Modifica

Com'era prevedibile, i puntatori a funzione possono restituire valori, proprio come le funzioni, quindi:

 tipoRestituito function(parametri...) FuncPtr;

Per semplicità ci riferiamo sempre all'esempio di questo capitolo, quindi lo modifichiamo in modo tale che al posto di stampare il valore della somma, ce lo restituisca:

import std.stdio;
 
/*Creiamo il nostro puntatore a funzione*/
int function(int a, int b) FuncPtr;
 
/*Una funzione che verrà chiamata col puntatore a funzione*/
void Sum(int a, int b)
{
  return a + b;
}
 
int main(string[] args)        //Entry point del programma
{
  //Facciamo puntare il puntatore a funzione all'indirizzo di SayHello
  FuncPtr = ∑
  //Chiamiamo la funzione che sta puntando
  int res = FuncPtr(60, 40);
  //Stampiamo il risultato
  writefln("Il totale e': %d", res);
 
  return 0; 
}
 Output:
 Il totale e': 100

Pagine su D Programming

Crea una pagina
25pagine in
questa wiki
Advertisement | Your ad here

Latest Photos

Carica un'immagine
10immagini in questa wiki
Vedi altre >

Attività recenti della Wiki

Vedi >

Nella rete di Wikia

Wiki a caso