Ciao ti faccio degli esempi:
codice:
#include <stdlib.h>
#include <stdio.h>
void Vettore1(int * v, int n);
void Vettore2(int v[], int n);
void Matrice1(int m[][3], int r, int c);
void Matrice2(int (*m)[3], int r, int c);
int main()
{
int vett[10];
int mat[3][3];
int i, j;
for(i = 0; i < 10; i++)
{
vett[i] = i+1;
}
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
mat[i][j] = i + j;
Vettore1(vett, 10);
Vettore2(vett, 10);
Matrice1(mat, 3, 3);
Matrice2(mat, 3, 3);
return 0;
}
void Vettore1(int *v, int n)
{
int i;
printf("Stampa del vettore con la funzione Vettore1:\n");
for(i = 0; i < n; i++)
{
printf("%d ", v[i]);
}
}
void Vettore2(int v[], int n)
{
int i;
printf("\n\nStampa del vettore con la funzione Vettore2:\n");
for(i = 0; i < n; i++)
{
printf("%d ", v[i]);
}
}
void Matrice1(int m[][3], int r, int c)
{
int i, j;
printf("\n\nStampa della matrice con la funzione Matrice1:\n");
for(i = 0; i < r; i++)
{
for(j = 0; j < c; j++)
printf("%d ", m[i][j]);
printf("\n");
}
}
void Matrice2(int (*m)[3], int r, int c)
{
int i, j;
printf("\n\nStampa della matrice con la funzione Matrice2:\n");
for(i = 0; i < r; i++)
{
for(j = 0; j < c; j++)
printf("%d ", m[i][j]);
printf("\n");
}
}
Proprio per il legame che c'è tra vettori e puntatori in c puoi fare come ti ho mostrato (non mi soffermo molto sulle varie spiegazioni, però se vuoi chiedi pure)
Mentre per le matrici è un po' diverso perché il compilatore deve obbligatoriamente conoscere almeno il numero di colonne della matrice altrimenti altrimenti non sarà in grado di indirizzare correttamente i riferimenti alla matrice.
Se qualcosa non ti è chiaro chiedi pure...
PS:
oregon chiedo venia, probabilmente hai scritto mentre io stavo rispondendo... ed in effetti non so se facendo gli esempi ti ho fatto "più male che bene", sono argomenti che comunque si trovano su di un qualsiasi libro...