RicardasSim icon

2d array

RicardasSim | PRO | 10/26/25 04:42:35 PM UTC | 0 ⭐ | 14880 👁️ | Never ⏰ | []
C |

1.86 KB

|

None

|

0 👍

/

0 👎

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
 
    int num_of_rows = 3;
    int num_of_cols = 4;
 
    // Allocate memory for an array of int pointers
 
    int **p_mtrx = malloc( num_of_rows * sizeof(int *) );
 
    if ( p_mtrx == NULL )
    {
        // If allocation fails, print an error and exit
        printf("Error: failed to allocate memory for p_mtrx.\n");
        return 1;
    }
 
    // Allocate memory for each row and initialize values
 
    for ( int i = 0; i < num_of_rows; ++i )
    {
        p_mtrx[i] = malloc( num_of_cols * sizeof(int) );
 
        if ( p_mtrx[i] == NULL )
        {
            // If allocation fails for a row,
            // clean up previously allocated rows
            printf("Error: failed to allocate memory for p_mtrx row [%d].\n", i);
 
            for ( int j = 0; j < i; ++j )
            {
                // Free each previously allocated row
                free( p_mtrx[j] );
            }
 
            // Free the top-level pointer array
            free( p_mtrx );
 
            return 1;
        }
 
        // Fill the row with sample values
        // sequential integers
        for ( int j = 0; j < num_of_cols; ++j )
        {
            p_mtrx[i][j] = i * num_of_cols + j;
        }
 
    }
 
    // Print the contents of the 2D array
    printf("Contents:\n");
 
    for ( int i = 0; i < num_of_rows; ++i )
    {
        for ( int j = 0; j < num_of_cols; ++j )
        {
            printf("%d ", p_mtrx[i][j] );
        }
        
        printf("\n");
    }
 
    // Free all allocated memory
    
    // Free each row
    for ( int i = 0; i < num_of_rows; ++i )
    {
        free( p_mtrx[i] ); 
    }
 
    // Free the array of row pointers
    free( p_mtrx ); 
 
    // Exit normal
 
    return 0;
}
 
/*
Output:
 
Contents:
0 1 2 3 
4 5 6 7 
8 9 10 11
 
*/

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎