Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    Restituire array da una funzione

    Salve ragazzi vorrei avere un info:

    Io ho questa funzione in C++. Adesso devo restituire un array... com devo fare? ecco la funzione:

    int funzione(int V[], int N) {
    int i;

    for (i=0; i<N; i=i+2) {
    if (V[i] < 0)
    V[i] = i;
    }
    return V[];
    }

    Questo è l'unico errore che mi dà:
    error C2059: errore di sintassi: ']'

    Dovrei restituire tutti i valori di V[i] e ovviamente richiamarli.. grazie mille
    Con i sogni possiamo conoscere il futuro...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma perche' dovresti restituire l'array ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    In teoria dovresti scrivere

    codice:
    int * funzione(int V[], int N) {
    int i;
    
    for (i=0; i<N; i=i+2) {
    if (V[i] < 0)
    V[i] = i;
    }
    return V;
    }
    ma comunque un array viene passato alla funzione per riferimento (essendo un puntatore con dello spazio allocato) quindi quando lo modifichi all'interno della funzione, tali modifiche sono visibili anche nella funzione chiamante e quindi non hai alcun bisogno di restituire il valore esplicitamente... tra l'altro, in generale è una pessima tecnica quella di restituire con return un valore che per la funzione è anche di input... per quello esiste il passaggio per riferimento.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    ma comunque un array viene passato alla funzione per riferimento (essendo un puntatore con dello spazio allocato) quindi quando lo modifichi all'interno della funzione, tali modifiche sono visibili anche nella funzione chiamante e quindi non hai alcun bisogno di restituire il valore esplicitamente...
    Da cui la mia domanda ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Scusami, ma mi potresti fare un esempio? Come la richiamo?
    Con i sogni possiamo conoscere il futuro...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Dichiara l'array e lo passi con il suo nome ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    int funzione(int V[], int N) {
    int i;

    for (i=0; i<N; i=i+2) {
    if (V[i] < 0)
    V[i] = i;
    }

    return V;
    }


    Ho fatto così, ma niente non va mi da sempre un errore
    Con i sogni possiamo conoscere il futuro...

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    No ... non mi sono spiegato ...

    NON devi restituire l'array. Io parlavo di come chiamare la funzione ...

    codice:
    void funzione(int V[], int N) 
    {
      int i;
    
      for (i=0; i<N; i=i+2)
        if (V[i] < 0)
          V[i] = i;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Ho dichiarato una var.. r e ho fatto così:

    r = funzione(V, N);

    Però mi dà questo errore ora:

    error C2440: '=': impossibile convertire da 'void' a 'int'
    Con i sogni possiamo conoscere il futuro...

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Forse non mi sono spiegato ... la funzione NON deve restituire nulla ...

    funzione(V, N);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.