Как правильно объявить двумерный динамический массив через 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( "" );
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.467 из 5
Похожие ответы