Простий спосіб – це виділити блок пам'яті розміром r*c і отримати доступ до його елементів за допомогою простої арифметики вказівника. Ми можемо створити масив покажчиків розміром r. Зауважте, що, починаючи з C99, мова C дозволяє використовувати масиви змінного розміру. Після створення масиву покажчиків ми можемо динамічно виділяти пам'ять для кожного рядка.
Щоб виділити пам'ять для масиву, виконайте такі дії:
- Оголошіть вказівник, який вказуватиме на перший елемент одновимірного масиву.
- Використовуйте malloc, щоб виділити пам'ять для потрібної кількості елементів.
- Призначте вказівнику адресу блоку пам’яті, яку повертає malloc.
Наступний фрагмент коду виконує динамічний розподіл такої матриці: int **M; M = malloc (m * sizeof (int *)); for (int i = 0; i < m; ++i) M[i] = malloc (n * sizeof (int)); Отже, M[i][j] є елементом M, що знаходиться на перетині рядка i та стовпця j.
Використовуйте spalloc для ініціалізації розрідженої матриці розміром 20 на 20 із усіма нулями з місцем для 100 ненульових елементів. n = 20; S = spalloc(n,n,5*n); Потім використовуйте цикл for, щоб заповнювати стовпці S по одному із середнім значенням не більше п’яти ненульових елементів на стовпець.
Щоб виділити динамічну пам'ять, ви можете використовуйте функції malloc() або calloc().. Для їх використання необхідно включити заголовок <stdlib.h>.