Visualizzazione dei risultati da 1 a 3 su 3

Discussione: matrici e dimensione

  1. #1

    matrici e dimensione

    ciao a tutti,
    come mai nella dichiarazione del prototipo di una funzione che accetta un
    matrice intera devo per forza indicare la dimensione???
    codice:
    int const n=5;
    int const m=5;
    void carica (int num[n][m]);
    mentre nel caso di un vettore posso fare:
    codice:
    int const n=5;
    int num[n];
    void carica (int num[]);
    ciao!
    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    Non vorrei dire una fesseria:

    una variabile array fa riferimento a tutto l'array quindi durante la sua inizializzazione bisogna conoscere a priori la dimensione.
    Utilizzando un puntatore, questo punta alla locazione di memoria del primo elemento, ecco perchè non è necessario conoscerne le dimensioni in fase di programmazione (vedi memoria dinamica).

    Se non è corretto quello che ho detto, segnalatelo subito !!!

    Grazie ,

  3. #3
    Di norma, per un vettore a n dimensioni, devi specificare la lunghezza per le prime n - 1.

    Quindi al massimo potresti fare:

    codice:
    void carica( int num[ n ][] );
    Se stai usando il C++ puoi evitare questi costrutti *farlocchi* creandoti magari una classe apposita (per dire, 'class matrix') che incapsuli i comportamenti di una matrice "dinamica", allocazioni e deallocazioni in primis. Inoltre cosi` facendo e` molto piu` facile evitare i cosiddetti memory leaks, perche` tutto il "lavoro sporco" sara` compito esclusivo di costruttori/distruttori e metodi interni alla classe stessa. E fatto una volta e` fatto per sempre.

    Ciao.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.