Multi-dimensional Array via malloc()
◀ Differences between Arrays and Pointers▶ Multidimensional Array via new Operator Amazon
malloc() is a popular library function in C. A programmer knowing how to use
malloc() has no problem creating a one-dimensional array. However, what about two-dimensional or even three-dimensional array? The point of using
malloc() is to dynamically allocate space because in some situations the programmer has no way of knowing how many variables he needs until later.
Here is an example of how to use
malloc() to create a two-dimensional array:
char **peers;
peers=(char**)malloc(3*sizeof(char*)); /* peers contains 3 char* */
peers[0]=”the first one”; /* initialize the first char* */
peers[1]=”the second one”; /* initialize the second char* */
peers[2]=”the third one”; /* initialize the third char* */
As we can see,
peers is a two-dimensional array, but how are the data stored? For example, what will
peers[0][5] give you? It will give you the letter “i” because it is the sixth letter in
peers[0].
For those who are still confused by the way
malloc() works here is an example of how to use
malloc() to create a three-dimensional array:
char ***peers;
peers=(char***)malloc(3*sizeof(char**)); /* peers contains 3 char** */
peers[0]=(char**)malloc(3*sizeof(char*)); /* peers[0] contains 3 char* */
peers[1]=(char**)malloc(4*sizeof(char*)); /* peers[1] contains 4 char* */
peers[2]=(char**)malloc(5*sizeof(char*)); /* peers[2] contains 5 char* */
/* initialize all char* variables, 12 total */
peers[0][0]="guys";
peers[0][1]="it";
peers[0][2]="all";
peers[1][0]="comes";
peers[1][1]="down";
peers[1][2]="to";
peers[1][3]="dealing";
peers[2][0]="with";
peers[2][1]="people";
peers[2][2]="david";
peers[2][3]="and";
peers[2][4]="jim";
If you want to deallocate memory allocated by using malloc(), use free(), not delete!
◀ Differences between Arrays and Pointers▶ Multidimensional Array via new Operator