Parametri formali valore di tipo matrice
In linguaggio C i parametri formali passati per valore relativamente ad una matrice (non dinamica), si esprimono nelle due UNICHE forme equivalenti:
- tipobase nome_parametro[dimensione di righe][dimensione di colonne]
- tipobase nome_parametro[][dimensione di colonne]
Mentre è vietato l’uso di:
- tipobase ** nome_parametro
- tipobase nome_parametro[][]
Ad esempio si consideri il seguente programma:
#include<stdio.h> float matrix[3][4]; void riempi(float m[][4], int r, int c){ unsigned long i,j; for (i=0;i<r;i++) for (j=0;j<c;j++) { scanf("%f",&m[i][j]); fflush(stdin); } } void stampa(float m[][4], int r, int c){ unsigned long i,j; for (i=0;i<r;i++) for (j=0;j<c;j++) printf("\n%f ",m[i][j]); } main(){ riempi(matrix,3,4); stampa(matrix,3,4); getchar() ; } |
viene eseguito correttamente, cosi' come se fossero indicate anche le dimensioni inentrambe le coppie di parentesi quadre.
La notazione:
tipobase ** nome_parametro
può esere usata solo per parametri formali valore corrispondenti a matrici allocate in modo dinamico nell’heap (lo vedremo nell'allocazione dinamica della memoria).
La notazione:
tipobase nome_parametro[][]
è invece assolutamente proibita anche per le matrici dinamiche.