Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [C] Ritornare matrice

  1. #1

    [C] Ritornare matrice

    Per fare ritornare ad una funzione una matrice 4x4 devo utilizzare per forza i doppi puntatori?

    Esempio:

    double** Funzione(........)
    {
    double **matr;

    matr= new double*[4];

    for(int i=0; i<4; i++)
    {
    matr[i] = new double[4];
    }
    ...........
    ...........
    ...........

    return matr;
    }

  2. #2

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    se implementi la matrice come struttura puoi evitare questa rottura.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  4. #4
    Originariamente inviato da XWolverineX
    se implementi la matrice come struttura puoi evitare questa rottura.
    Ma non capisco cos'abbia di così complicato:
    codice:
    char** double_matrix(void);
    
    int main(void){
    
       char **doubleMatrix = double_matrix();
    
       return 0;
    
    }
    
    char** double_matrix(void){
    
       static char matrix[90][90];
    
       return matrix;
    
    }
    Lo so che usare static non è buona pratica, ma il mio è solo un'esempio ...
    Comunque credo XWolverineX intenda:
    codice:
    typedef struct DoubleMatrix {
    
       char matrix[90][90];
    
    }DoubleMatrix;
    
    DoubleMatrix* double_matrix(void);
    
    int main(void){
    
       DoubleMatrix *doubleMatrix = double_matrix();
    
       free(doubleMatrix);
    
       return 0;
    
    }
    
    DoubleMatrix* double_matrix(void){
    
       DoubleMatrix *matrix = malloc(sizeof(DoubleMatrix));
    
       assert(matrix == NULL);
    
       return matrix;
    
    }

  5. #5
    Originariamente inviato da menphisx
    codice:
       assert(matrix == NULL);
    forse intendevi:
    codice:
       assert(matrix != NULL);
    ;-)

  6. #6
    Originariamente inviato da MacApp
    forse intendevi:
    codice:
       assert(matrix != NULL);
    ;-)

    già.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma stiamo parlando di allocazione dinamica o statica ...?

    In realta' con la struttura la matrice e' staticamente allocata ...

    Si potrebbe anche usare un semplice puntatore e allocare la matrice come se fosse un vettore, ma dopo la gestione degli indici sarebbe un pizzico piu' complessa ...

    Se Matthew82 la vuole allocare dinamicamente, allora il doppio puntatore e' la strada corretta (e non capisco perche' seguirne un'altra ...).
    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.