funktio-osoittimet: niitä on selitetty pintapuolisesti monessakin paikassa, mutta moni selitys unohtaa sen tärkeän lisäyksen:
funktio-osoittimet ja typedef.
Täältä:
http://www.newty.de/fpt/fpt.html#chapter2
tuokin asia löytyy.
Siis:
typedef:iä käyttävä versio on hyödyllinen varsinkin silloin, jos esim. funktion tulee palauttaa funktio-osoitin tai muuten funktio-osoittimia annetaan funktioille parametreina.
Vaikka parametrina käyttö on muutenkin mahdollista, niin typedef:in käyttö tekee funktion prototyypistä selkeämmän, ja siksi helpommin ymmärrettävän ja luettavan.
// Solution using a typedef: Define a pointer to a function which is taking
// two floats and returns a float
typedef float(*pt2Func)(float, float);
// Function takes a char and returns a function pointer which is defined
// with the typedef above. specifies which function to return
pt2Func GetPtr2(const char opCode)
{
if(opCode == ' ')
return &Plus;
else
return &Minus; // default if invalid operator was passed
}
funktio-osoittimet ja typedef.
Täältä:
http://www.newty.de/fpt/fpt.html#chapter2
tuokin asia löytyy.
Siis:
typedef:iä käyttävä versio on hyödyllinen varsinkin silloin, jos esim. funktion tulee palauttaa funktio-osoitin tai muuten funktio-osoittimia annetaan funktioille parametreina.
Vaikka parametrina käyttö on muutenkin mahdollista, niin typedef:in käyttö tekee funktion prototyypistä selkeämmän, ja siksi helpommin ymmärrettävän ja luettavan.
// Solution using a typedef: Define a pointer to a function which is taking
// two floats and returns a float
typedef float(*pt2Func)(float, float);
// Function takes a char and returns a function pointer which is defined
// with the typedef above. specifies which function to return
pt2Func GetPtr2(const char opCode)
{
if(opCode == ' ')
return &Plus;
else
return &Minus; // default if invalid operator was passed
}
Vastaukset 1
Vanhimmat
Suomeksi funktio-osoittimista, muistinkäytöstä, säikeistä ja synkronoinnista jne. on kerrottu mm. tuolla:
http://c-ohjelmoijanajatuksia.blogspot.com/