Dom 18 Agosto, 07:40:50 - 2019

Autore Topic: Espressione di tipo  (Letto 539 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline xian89

  • Studente
  • *
  • Post: 46
  • FeedBack: +3/-1
    • Mostra profilo
Espressione di tipo
« il: Lun 08 Settembre, 17:07:01 - 2014 »
Ragazzi ho trovato questa espressione di tipo in un compito:
int a, double *b

a+((int* (*)(double*))b)(b+4)

e la soluzione diceva Rvalue di tipo int*.

Chi gentilmente mi spiega il perche? premettendo che non capisco proprio cosa sia questo -> (int* (*)(double*))b

Grazie mille.

Offline heavenriver

  • Global Moderator
  • Direttore di Dipartimento
  • *****
  • Post: 1060
  • FeedBack: +103/-67
  • z = z² + c
    • Mostra profilo
    • Sito web (Curriculum Vitae)
Re:Espressione di tipo
« Risposta #1 il: Mar 09 Settembre, 09:39:44 - 2014 »
E' un cast :)
Parti dal punto più "interno" per interpretarlo: (int* (*)(double*))b
(*) ---> puntatore a funzione
int* ---> tipo del valore restituito dalla funzione
(double*) ---> parametro d'ingresso della funzione
Quindi se ho fatto bene i conti, b è un puntatore a funzione che restituisce un puntatore a intero.
Poi casti (b+4) allo stesso tipo di b (puntatore a funzione che restituisce un puntatore a intero) e ci sommi a, che è un lval int.
Ergo, il puntatore "scala" di un numero di posizioni uguale ad a :sisi: