1. Home
  2. Computing & Technology
  3. C / C++ / C#

C Tutorial - About Pointers

By David Bolton, About.com

10 of 10

Example of 2D Structure with Pointers

#define MAXROWS 5
#define MAXCOLUMNS 10
#define MAXLINELENGTH 80

typedef struct mapitem
{
  int row,column;
  char * line;
};

typedef struct mapitem * pmapitem;
typedef pmapitem row[MAXCOLUMNS];
typedef row * gridtype[MAXROWS];

int main(int argc, char* argv[])
{
  gridtype grid;
  pmapitem tempitem;
  int rowindex,colindex;

  for (rowindex=0;rowindex < MAXROWS; rowindex++) {
    
    grid[rowindex]=(row *)malloc(sizeof(row)) ;
    for (colindex=0;colindex < MAXCOLUMNS;colindex++)
    {
       
        tempitem = (pmapitem)malloc(sizeof(struct mapitem)) ;
        tempitem->row= rowindex;
        tempitem->column= colindex;

       
      tempitem->line = (char *)malloc(MAXLINELENGTH+1) ;
     /* clear the string */
    *tempitem->line ='\0';

    
    *(grid[rowindex])[colindex] = tempitem;
     }
   }

    
    (*grid[0][0])->line="Top Left Corner";
    (*grid[MAXROWS-1][0])->line="Bottom Left Corner";
    (*grid[0][MAXCOLUMNS-1])->line="Top Right Corner";
    (*grid[MAXROWS-1][MAXCOLUMNS-1])->line="Bottom Right Corner";
    return 0;
}
Download Example 6
This is a 2d grid of structs with pointers for each item and row to make it more flexible. Memory must be allocated for
  1. Each Row.
  2. Each Item in each row.
  3. Each Line (the char * field) in each item.
And free them up when finished. (Not done).

This completes this lesson. The next lesson will be on the advanced users of pointers.

Explore C / C++ / C#
About.com Special Features

Stay connected and entertained with reviews on tips on the latest HDTVs, cellphones and more. More >

Easy ways to connect two computers for networking purposes. More >

  1. Home
  2. Computing & Technology
  3. C / C++ / C#

©2009 About.com, a part of The New York Times Company.

All rights reserved.