fork download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <inttypes.h>
  4.  
  5. int main()
  6. {
  7. int n = 2;
  8. int m = 3;
  9. // int i[2][3] = { {1, 2, 3}, {4, 5, 6} };
  10. int * i = (int*)malloc(sizeof(int) * n * m); // i[n][m]
  11. for(int j = 0; j < n * m; ++j) i[j] = j + 1;
  12. for(int j = 0; j < n; ++j)
  13. {
  14. for(int k = 0; k < m; ++k)
  15. printf("%d ", *(i + j * m + k));
  16. printf("\n");
  17. }
  18.  
  19. int (*ii)[m] = (int(*)[m]) i;
  20. for(int j = 0; j < n; ++j)
  21. {
  22. for(int k = 0; k < m; ++k)
  23. printf("%d ", ii[j][k]);
  24. printf("\n");
  25. }
  26. ii = (int(*)[m]) i;
  27. printf("i: 0x%p\n", i);
  28. printf("ii: 0x%p\n", ii);
  29. printf("sizeof(i): %" PRIuPTR "\n", sizeof(i));
  30. printf("sizeof(*i): %" PRIuPTR "\n", sizeof(*i));
  31. printf("sizeof(ii): %" PRIuPTR "\n", sizeof(ii));
  32. printf("sizeof(*ii): %" PRIuPTR "\n", sizeof(*ii));
  33. free(i);
  34. }
Success #stdin #stdout 0s 5400KB
stdin
Standard input is empty
stdout
1 2 3 
4 5 6 
1 2 3 
4 5 6 
i: 0x0x559f9da69260
ii: 0x0x559f9da69260
sizeof(i): 8
sizeof(*i): 4
sizeof(ii): 8
sizeof(*ii): 12