Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    32

    [C] perché utilizzare i puntatori ?

    codice:
    #include <stdio.h>
     0015 #include <stdlib.h> 
    0016  
    0017 int* foo()  { 
    0018   int i, *v = (int*) malloc( 10*sizeof(int) ); 
    0019   for ( i=0; i < 10; i++ ) 
    0020     v[i] = i; 
    0021 return v; } 
    0022  
    0023  
    0024 int main()  { 
    0025   int *v = foo(); 
    0026   free(v); 
    0027   return 0; 
    0028 }
    Non riesco a capire per quale motivo e' stato usato un puntatore per dichiarare la funzione foo(). i puntatori a funzione servono quando il programma deve scegliere quale funzione chiamare fra diverse possibili, e la scelta non é definita a priori ma dipende dai dati del programma stesso. Ma qui l'uso della funzione foo () non serve solo per stampare un array con i numeri ordinati da 0 a 1. Perché poi utilizzare una malloc se si già che avrò bisogno di un array di 10 elementi ? Grazie mille in anticipo e come al solito scusate se le domande sono stupide !

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Hai preso un abbaglio.
    In questo caso è solo dichiarata una normalissima funzione che ritorna un puntatore a intero (un vettore di interi) e viene richiamata assegnando il suo risultato, appunto, ad un puntatore ad intero (un vettore di interi).

    Qui non si sta ritornando alcun puntatore a funzione.

    codice:
    int foo() { ... }   // Una funzione che ritorna un valore intero
    int* foo() { ... }   // Una funzione che ritorna un puntatore ad intero (vettore)
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Qui non ci sono "puntatori a funzione" ma una "funzione che restituisce un puntatore" (sono ovviamente due cose diverse).

    Il fatto che siano 10 non importa, potrebbero essere un numero diversi di elementi o si potrebbe passare il numero come parametro della funzione. L'importante è che, se il vettore viene creato all'interno della funzione, questo si possa utilizzare al suo esterno (nel main in questo caso) tramite il puntatore restituito.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    32
    Grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.