PDA

Visualizza la versione completa : [C] Indipedenza dai dati


Downloader
07-03-2008, 16:05
Avrei bisogno di alcune informazioni (e magari un esempio esemplificativo) per creare una funzione che sia in grado di funzionare correttamente indipendentemente dal tipo di dato che io vado a passargli come parametro.

Ad esempio il C mette a disposizione le funzioni malloc() e free() che come parametro ricevono un puntatore a void.

Cosa potete dirmi??

Grazie!

oregon
07-03-2008, 16:56
La malloc non riceve un puntatore a void come parametro! Semmai restituisce un puntatore void ...

Puoi scrivere una funzione che accetti un puntatore void come parametro ed usarla ...

Downloader
07-03-2008, 16:59
Originariamente inviato da oregon
Puoi scrivere una funzione che accetti un puntatore void come parametro ed usarla ...

Si, ma come faccio ad usarla??
Cioè, mettiamo il caso che io passo alla mia funzione un array di interi, come faccio a sapere che si tratta proprio del tipo int ad esempio??

Potresti farmi qualche esempio per favore?

oregon
07-03-2008, 17:10
Ma devi risolvere un problema "in particolare" oppure e' un discorso del tutto generico?

Nel secondo caso, il linguaggio C non ti consente di fare quello che vuoi senza che tu indichi il tipo di argomento in qualche modo ... (ovviamente in C++ puoi usare l'overload ...)

Potresti scrivere

void funz(int tipo, void *arg)

e decidere che tipo = 1 indica che il dato passato per puntatore e' un intero, 2 se e' un char ... e cosi' via ...

Pero' ti ripeto, parliamo "in concreto" di cosa vuoi fare .... probabilmente si puo' scegliere una strada apposita ...

Downloader
07-03-2008, 17:15
Per ora è un discorso teorico in quanto il mio prof ha spiegato davvero brevissimamente l'argomento.
Mi è già stato dato un programma da fare: devo prendere come parametro un intero di tipo sconosciuto e devo stampare i suoi valori e ordinarli seguendo il criterio che preferisco.

oregon
07-03-2008, 17:33
Che vuol dire "un intero di tipo sconosciuto"???

E che vuol dire "i suoi valori" ??

Sei sicuro che non abbia detto altro?

Downloader
07-03-2008, 17:56
Ti chiedo scusa oregon, purtroppo in questo periodo non ci sto molto e questo mi porta spesso a scrivere cose assurde senza senso.

Comunque mi è stato chiesto di passare alla funzione che chiamo stampaArray


void stampaArray(void *, int);

un array di tipo sconosciuto e sta a me fare in modo di poter stampare il contenuto di quell'array.

Downloader
08-03-2008, 14:28
uppete

oregon
08-03-2008, 14:55
Ok ... e nel secondo parametro cosa passi?

Downloader
08-03-2008, 19:07
Il numero degli elementi dell'array.

Loading