Utilizziamo cookie tecnici e di profilazione (anche di terze parti) per migliorare la tua esperienza su questo sito. Continuando la navigazione accetti l'utilizzo dei cookie; in alternativa, leggi l'informativa e scopri come disabilitarli.

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.