Ho un array 3-dimensionale int A[][8][9] e devo passare per riferimento a una funzione il suo strato k-esimo (cioe' tutti gli elementi della matrice A[k][][]).
Ho un array 3-dimensionale int A[][8][9] e devo passare per riferimento a una funzione il suo strato k-esimo (cioe' tutti gli elementi della matrice A[k][][]).
E quindi? Qual è il problema? Qual è il codice che hai scritto che non funziona?Originariamente inviato da starcraftworld
Ho un array 3-dimensionale int A[][8][9] e devo passare per riferimento a una funzione il suo strato k-esimo (cioe' tutti gli elementi della matrice A[k][][]).
Specificare qualche dettaglio in più non guasta mai... giusto per evitare inutili incomprensioni.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Non ho scritto il codice. Perche' non so come si faccia a passare il riferimento di un "sottoarray bidimensionale"...
Ciao,
non so se può esserti di aiuto ma ho pensato a questo:
in C le matrici sono memorizzate per righe in un array monodimensionale. Questo vuol dire che un elemento Aij di una matrice A[m][n] si può utilizzare anche con *(A+(i x n)+j).
Analogamente per le matrici 3D. Suppniamo A[k][m][n]: da A parte la prima sottomotracie, da (A+(m x n)) parte la seconda sottomatrice, da (A+(m x n x k)) parte la k-esima sottomotracie.
Volendo potresti usare un int * al quale assegnare ogni volta l'indirizzo di partenza.
Ad esempio (ma spero di non aver sparato solo cavoloate)
codice:#include <stdio.h> int main (void) { int a[5][5][5], *b; int i,j,k; for(k=0;k<5;k++) { for(i=0;i<5;i++) { for(j=0;j<5;j++) a[k][i][j]=j; } } for(k=0;k<5;k++) { b=(int*)(a)+(25*k); for(i=0;i<5;i++) { for(j=0;j<5;j++) printf("%d ", *(b+(i*5)+j)); printf("\n"); } printf("\n\n"); } return 0; }