Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [c] array bidimensionale dinamico

    ragazzi ho scritto questa func per l'allocazione dinamica di array bidimensionale...
    è efficiente?

    codice:
    int **_creaArrayDinamico( int *m, int *n ) {
    
    	int **myArr;
    
    	myArr = (int **)malloc( (*m) * sizeof(int *) );
    	for(i=0;i<*m;i++)
    		myArr[i] = (int *)malloc( (*n) * sizeof(int) );
    
    	return myArr;
    }

  2. #2
    Sì, anche se non capisco perché passi per puntatore i due argomenti (quando potrebbero essere passati semplicemente per valore) e perché ci sia un underscore (_) di fronte al nome della funzione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    perchè vengono valorizzati in una func e mi servono nella func chiamante...

    uso l'underscore per le func che richiamo solo attraverso altre func (alcune func condivise)

  4. #4
    Originariamente inviato da xnavigator
    perchè vengono valorizzati in una func e mi servono nella func chiamante...
    A questa funzione non importa nulla di tutto ciò, non le serve che siano passate per puntatore, le basta avere i valori. Inoltre i due argomenti a mio avviso dovrebbero essere di tipo size_t, o al limite di un qualche tipo di intero senza segno, di sicuro non con segno. Che senso avrebbe allocare un array con dimensioni negative?
    Quindi:
    codice:
    int **_creaArrayDinamico( size_t m, size_t n ) {
    
    	int **myArr;
    
    	myArr = (int **)malloc( m * sizeof(int *) );
    	for(i=0;i<m;i++)
    		myArr[i] = (int *)malloc( n * sizeof(int) );
    
    	return myArr;
    }
    uso l'underscore per le func che richiamo solo attraverso altre func (alcune func condivise)
    Capito, così separi l'interfaccia pubblica dalle funzioni private.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Originariamente inviato da MItaly
    tipo size_t
    ancora non l'ho capito bene sto tipo sarà che visual c++ non lo formatta con un colore diverso bho

  6. #6
    no aspetta ma qualcosa non mi è chiaro...

    io so che gli elementi di una matrice vengono allocati "sequenzialmente" nella memoria..

    cioè se ho un array[3][4]; e voglio l'elemento [2][1]; posso anche fare:
    *(array + 2*4+1);

    bhè allora perchè per quest'array devo allocare per ogni riga lo spazio degli elementi della colonna? cosi fancedo gli elementi non saranno più sequenziali credo

    cosa sto sbagliando?
    non capisco

  7. #7
    Originariamente inviato da xnavigator
    ancora non l'ho capito bene sto tipo sarà che visual c++ non lo formatta con un colore diverso bho
    http://www.cplusplus.com/reference/c...string/size_t/

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.