no, a static array needs no initialization ("needs" meaning you don't have to give one. Of course you should consider initial values depending on your problem).
You can change all values always. Just use e.g. my_array[2][3] = 42 to assign the value.
people are using dynamically alocated memory whenever the array size is unknown at compile time or changes over time. Allocated memory is not initialized, therefore it's your responsibility to provide good default values.