В этой краткой заметке приведен пример иллюстрирующий принцип работы с динамическими массивами в C(89). Назначение заметки - шпаргалка для студентов младших курсов.
#include <stdio.h>
#define ARRAY_WIDTH 10
#define ARRAY_HEIGHT 10
void Foo(int **arr)
{
arr[5][4] = 333;
*(*(arr + 5) + 4) = 333; /* аналогично предыдущей строке */
}
int main(void)
{
int **my_array;
if (!(my_array = (int**) malloc(sizeof(int*) * ARRAY_HEIGHT)))
{
printf("Error allocating my_array[%d][]\n", ARRAY_HEIGHT);
return -1;
}
int i;
for (i = 0; i != ARRAY_HEIGHT; ++i)
if (!(my_array[i] = (int*) malloc(sizeof(int) * ARRAY_WIDTH)))
{
printf("Error allocating my_array[%d][%d]\n", ARRAY_HEIGHT, i);
return -1;
}
Foo(my_array);
printf("%d \n", my_array[5][4]);
if (my_array)
{
for (i = 0; i != ARRAY_HEIGHT; ++i)
if (my_array[i]) free(my_array[i]);
free(my_array);
}
return 0;
}