I am new to C. I created a multidimensional array and I created hardcoded the size into the second square bracket(3). it compiled and I got my answer. However, i saw in a tutorial that someone created a const integer variable and put the variable name in the second square bracket and his code compiled. However when I tried mine(the exact same thing) it did not compile. See my code below
int main()
 16 {
 17 
 18 
 19         int uchegrade[] = {90, 87, 86};
 20 
 21 
 22 
 23 
 24 
 25
 26         int const columns = 3;
 27         int threegrades[][columns] = {
 28 {88, 78, 91},
 29  {81, 81, 67},
 30   {77, 78, 98}
 31 
 32         };
 33 
 34 
 35         printf("%d\n", uchegrade[3]);
 36         printf("physics score is %d marks\n", threegrades[1][2]);
 37 
 38         return 0;
 39 }
                                                         
below is the error i kept getting
multidimensionalarray.c: In function ‘main’:
multidimensionalarray.c:27:2: error: variable-sized object may not be initialized
   27 |  int threegrades[][columns] = {
      |  ^~~
multidimensionalarray.c:28:19: warning: excess elements in array initializer
   28 | /*first student*/{88, 78, 91},
      |                   ^~
multidimensionalarray.c:28:19: note: (near initialization for ‘threegrades[0]’)
multidimensionalarray.c:28:23: warning: excess elements in array initializer
   28 | /*first student*/{88, 78, 91},
      |                       ^~
multidimensionalarray.c:28:23: note: (near initialization for ‘threegrades[0]’)
multidimensionalarray.c:28:27: warning: excess elements in array initializer
   28 | /*first student*/{88, 78, 91},
      |                           ^~
multidimensionalarray.c:28:27: note: (near initialization for ‘threegrades[0]’)
multidimensionalarray.c:29:19: warning: excess elements in array initializer
   29 | /* 2nd student*/ {81, 81, 67},
      |                   ^~
multidimensionalarray.c:29:19: note: (near initialization for ‘threegrades[1]’)
multidimensionalarray.c:29:23: warning: excess elements in array initializer
   29 | /* 2nd student*/ {81, 81, 67},
      |                       ^~
multidimensionalarray.c:29:23: note: (near initialization for ‘threegrades[1]’)
multidimensionalarray.c:29:27: warning: excess elements in array initializer
   29 | /* 2nd student*/ {81, 81, 67},
      |                           ^~
multidimensionalarray.c:29:27: note: (near initialization for ‘threegrades[1]’)
multidimensionalarray.c:30:19: warning: excess elements in array initializer
   30 | /*3rd student*/  {77, 78, 98}
      |                   ^~
multidimensionalarray.c:30:19: note: (near initialization for ‘threegrades[2]’)
multidimensionalarray.c:30:23: warning: excess elements in array initializer
   30 | /*3rd student*/  {77, 78, 98}
      |                       ^~
multidimensionalarray.c:30:23: note: (near initialization for ‘threegrades[2]’)
multidimensionalarray.c:30:27: warning: excess elements in array initializer
   30 | /*3rd student*/  {77, 78, 98}
      |                           ^~
multidimensionalarray.c:30:27: note: (near initialization for ‘threegrades[2]’)
multidimensionalarray.c:27:6: error: array size missing in ‘threegrades’
   27 |  int threegrades[][columns] = {
      |      ^~~~~~~~~~~
klinks@klinks-VirtualBox:~/cprogramming$
