#include int main(int argc, char *argv[]) { void Print(float [][4]); // First dim. is "ignored" ! float A[3][4]; int i, j, k; k = 1; for (i = 0; i < 3; i = i + 1) for (j = 0; j < 4; j = j + 1) { A[i][j] = k; k = k + 1; } Print(A); // This is what you would normally do // You can do very weird things when you pass an array // You can pass a different starting address... cout << "\n"; Print(&A[0]); // Address of first row vector cout << "\n"; Print(&A[1]); // Address of second row vector cout << "\n"; Print( (float(*)[4]) &A[0][0]); // Address of element A[0][0] cout << "\n"; Print( (float(*)[4]) &A[0][1]); // Address of element A[0][1] } void Print(float H[][4]) // First dim. is "ignored" ! { int i, j, k; for (i = 0; i < 3; i = i + 1) { for (j = 0; j < 4; j = j + 1) cout << H[i][j] << "\t"; cout << "\n"; } H[2][2] = H[2][2] + 1000; // Provide evidence for call by REFERENCE }