What you have there is not a c-string, but an array of characters.
http://en.wikipedia.org/wiki/Null-terminated_string
You could output the characters individually cout << myWords[0] << myWords[1] << etc, append a null character to the end char myWords[5] = { ... , '\0' };, or initialize the array with a string literal (implicit null) char myWords[] = "abyz";.
When you output myWords it will print all characters until it finds a null character '\0'. You don't have a null character in the array so it will continue read outside the array. This memory might belong to other variables and such things, depending on what the compiler puts there.
You'll see whatever resides in memory after your array of characters, this may be nothing, or it may be something, cout will continue printing characters until a null terminator is encountered.
For an example,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#include <iostream>
usingnamespace std;
struct example
{
staticchar hello[];
staticchar garbage[];
};
// I'm using a struct to ensure hello and garbage are
// contiguous in memory (assuming there is no padding).
char example::hello[] = { 'H', 'e', 'l', 'l', 'o' }; // array of characters
char example::garbage[] = "????"; // null terminated string
int main()
{
cout << example::hello;
return 0;
}