> Think of an array as a container for objects of the same type.
> That's it. A word such as "Word" is simply an array of 4
> characters. However, arrays of characters are always ended
> with the '\0' (always considered a single character), and so the
> above array would actually be 5 cells long.

This is not always correct. Yes, you think of strings as being 'null
terminated', but it is not a requirement. It is if you are using most
of the 'str*' functions, but it isn't a requirement:
Code:
char array[4] { 'w', 'o', 'r', 'd' };   // This is legal.

strncpy( array, 4, "cows" ); // This is legal.

puts( array ); // This is bad in this case.
Generally speaking, yes, you want all of your 'strings' to be null terminated.

A 'string' is an array of characters that is terminated by 1 character which has the value of zero. Thus:

char array[5] = "word";

This will null terminate it for you becuase you're using a "string". By enclosing the characters in double quotation marks at the point of assignment, it adds the null terminator. In my example, since I assign each character seperately, it will not.

Quzah.