Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di 810106
    Registrato dal
    Jun 2008
    Messaggi
    67

    [C] Allocazione di una matrice

    Nuovo dilemma!
    Salve a tutti, ogi leggendo un topic qui mi sono fatto una domanda: come alloca una matrice il sistema?
    Cioè come viene disposta una matrice in memoria? Quindi ho scritto queste 2 righe:
    codice:
    int main()
    {
      int matrix[5][5], *p;
      unsigned x,y;
      for(p=*matrix, x=0; x < 5; x++)
        for(y=0; y < 5; y++, p++)
          printf("(&[%d][%d])=%p, p=%p\n", x, y, &matrix[x][y], p);
      return 0;
    }
    Ora loutput è scrollato via xche sto provando altre cose pero mi ricordo che p e &matrix[x][y]
    davano lo stesso indirizzo in memoria quindi deduco che sul mio sistema (GNU/Linux) una matrice viene
    allocata come un array di X*Y elementi del tipo indicato. Questo significa che io posso scorrere
    la matrice con un puntatore senza star li a far cicli for su for... giusto? è portabile sta cosa!?

    Anche questa volta... GRAZIE!
    Free software: free as freedom!

  2. #2

    Re: [C] Allocazione di una matrice

    Originariamente inviato da 810106
    è portabile sta cosa!?
    No, non è portabile.

  3. #3

    Re: Re: [C] Allocazione di una matrice

    Originariamente inviato da MacApp
    No, non è portabile.
    non saprei, io direi di sì, perchè se dichiaro una matrice come
    matrix[dim1][dim2]
    l'elemento i-esimo, j-esimo si troverà alla posizione ( i*dim1 ) + j
    su qualsiasi sistema
    ciao
    sergio

  4. #4
    Utente di HTML.it L'avatar di 810106
    Registrato dal
    Jun 2008
    Messaggi
    67

    Bah...

    Certo che sarebbe comodo utilizzare un puntatore al posto di un doppio ciclo for...
    Free software: free as freedom!

  5. #5
    Originariamente inviato da MacApp
    No, non è portabile.
    Bisogna vedere cosa prevede lo standard C per gli array multidimensionali
    Originariamente inviato da 810106
    Certo che sarebbe comodo utilizzare un puntatore al posto di un doppio ciclo for...
    Mah, sicuramente è meno chiaro.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.