fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main() {
  5. int i, j;
  6. int a, b;
  7. int **mat;
  8.  
  9. // 行数と列数を入力
  10. scanf("%d %d", &a, &b);
  11.  
  12. // 2次元配列の動的確保
  13. mat = (int **)malloc(sizeof(int*) * a);
  14. if (mat == NULL) {
  15. printf("Memory allocation failed for rows.\n");
  16. return -1;
  17. }
  18.  
  19. // 各行に対するメモリを確保
  20. for (i = 0; i < a; i++) {
  21. mat[i] = (int *)malloc(sizeof(int) * b);
  22. if (mat[i] == NULL) {
  23. printf("Memory allocation failed for columns.\n");
  24. return -1;
  25. }
  26. }
  27.  
  28. // 2次元配列に数値を代入
  29. for (i = 0; i < a; i++) {
  30. for (j = 0; j < b; j++) {
  31. mat[i][j] = i * b + j; // 例として、i * b + jの値を代入
  32. }
  33. }
  34.  
  35. // 配列の表示
  36. for (i = 0; i < a; i++) {
  37. for (j = 0; j < b; j++) {
  38. printf("%d ", mat[i][j]);
  39. }
  40. printf("\n");
  41. }
  42.  
  43. // メモリの解放
  44. for (i = 0; i < a; i++) {
  45. free(mat[i]); // 各行に確保したメモリを解放
  46. }
  47. free(mat); // mat自体のメモリを解放
  48.  
  49. return 0;
  50. }
  51.  
Success #stdin #stdout 0.01s 5276KB
stdin
2 3
stdout
0 1 2 
3 4 5