C++ allows you to construct char arrays with a string literal.
However that is not what you're doing here. 2D arrays are actually arrays of arrays. So 'array2' is not a char array, it's an array of char arrays. And therefore it doesn't make any sense to assign a string literal to it.
Confusing? Yes, MD arrays are confusing, which is why I avoid them like the plague even though I understand them.
char array2[100][16] = {};
This works because arrays initialized with the empty braces {} have all of their elements default constructed. array2 is an array (not of chars, but it's still an array), so this is legal.
Each of array2's arrays get default constructed, which in turn default constructs each of those arrays (resulting in all chars being zero'd).
What i am going to be doing with the 2-D array is putting words in it.
strings strings strings. Get away from that char array crap.