fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct {
  5. unsigned w, h;
  6. int* data;
  7. } IntArray2Dim;
  8.  
  9. IntArray2Dim create(unsigned w, unsigned h) {
  10. IntArray2Dim array;
  11. array.w = w;
  12. array.h = h;
  13. array.data = (int*) calloc(w * h, sizeof(int));
  14. return array;
  15. }
  16.  
  17. int get(IntArray2Dim arr, unsigned i, unsigned j) {
  18. return arr.data[arr.h * i + j];
  19. }
  20.  
  21. void set(IntArray2Dim arr, unsigned i, unsigned j, int value) {
  22. arr.data[arr.h * i + j] = value;
  23. }
  24.  
  25. void destroy(IntArray2Dim arr) {
  26. free(arr.data);
  27. }
  28.  
  29. void print(IntArray2Dim arr) {
  30. unsigned i, j;
  31. for(i = 0; i < arr.w; ++i) {
  32. for(j = 0; j < arr.h; ++j) {
  33. int value = get(arr, i, j);
  34. printf("%d ", value);
  35. }
  36. putchar('\n');
  37. }
  38. }
  39.  
  40. int main(void) {
  41. IntArray2Dim array = create(5, 3);
  42. set(array, 4, 2, 123);
  43. set(array, 3, 1, 100);
  44. set(array, 0, 2, 250);
  45. print(array);
  46. destroy(array);
  47. return 0;
  48. }
  49.  
Success #stdin #stdout 0s 2424KB
stdin
Standard input is empty
stdout
0 0 250 
0 0 0 
0 0 0 
0 100 0 
0 0 123