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$