Showing posts with label Multi Dimensional Arrays and Pointer. Show all posts
Showing posts with label Multi Dimensional Arrays and Pointer. Show all posts

Saturday, May 10, 2008

Pointer(Multi Dimensional Arrays & Pointer )

Multi Dimensional Arrays & Pointer

We should think of multidimensional arrays in a
different way in C:

A 2D array is really a 1D array, each of whose elements
is itself an array
Hence

a[n][m] notation.

Array elements are stored row by row.

When we pass a 2D array to a function we must specify the
number of columns and the number of rows is irrelevant.

The reason for this is pointers again. C needs to know how
many columns in order that it can jump from row to row in memory.

Considerint a[5][35] to be passed in a function:

We can do:

f(int a[][35]) {.....}

or even:

f(int (*a)[35]) {.....}

We need parenthesis (*a) since [] have a higher precedence than *

So:
int (*a)[35]; /*declares a pointer to an array of 35 int */
int *a[35]; /*declares an array of 35 pointers to int */

Now lets look at the (subtle) difference between pointers
and arrays. Strings are a common application of this.

Consider:

char *name[10];
char Aname[10][20];

We can legally do name[3][4] and Aname[3][4] in C.

Copyright

Copyright © 2008 C Tutorial, All rights are reserved