Как правильно объявить двумерный динамический массив через malloc - C (СИ)
Формулировка задачи:
Подскажите как правильно объявить двумерный динамический массив через malloc типа инт размером 100х100?
Решение задачи: «Как правильно объявить двумерный динамический массив через malloc»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #define SZ 100 // размер квадратной матрицы //функция заполняет матрицу псевдослучайными данными void FillMatrix( int** matrix, const int size, const unsigned randRange, const int shift ); //функция печатает матрицу void PrintMatrix( int** matrix, const int size ); int main( void ) { // объявляем нашу матрицу как указатель на int и выделяем необходимую память для нее int** a = ( int** ) malloc( SZ * sizeof(int*) ); int i; for ( i = 0; i < SZ; ++i ) a[ i ] = ( int* ) malloc( SZ * sizeof(int) ); // заполняем матрицу псевдослучайными данными типа int FillMatrix( a, SZ, 100, 0 ); // выводим матрицу на экран puts( "Исходная матрица" ); PrintMatrix( a, SZ ); // освобождаем память, выделенную под матрицу for ( i = 0; i < SZ; ++i ) free( a[ i ] ); free( a ); return EXIT_SUCCESS; } void FillMatrix( int** matrix, const int size, const unsigned randRange, const int shift ) { int i, j; for ( i = 0; i < size; ++i ) for ( j = 0; j < size; ++j ) // заполняем квадратную матрицу псевдослучайными данными // shift - начальное значение диапазона данных // randRange - ширина диапазона matrix[ i ][ j ] = shift + rand() % randRange; } void PrintMatrix( int** matrix, const int size ) { int i, j; for ( i = 0; i < size; ++i ) { for ( j = 0; j < size; ++j ) printf( "%4d ", matrix[ i ][ j ] ); puts( "" ); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д