Serial.read() and for loop problems

So, I'm assuming that for an array of characters to be treated properly as a string in c it must have '\0' in the last element. Without this string functions will not return the expected results.

Correct.

Paul, you are infering that the value of cmd is the memory address of the first element of the array, correct?

No. I inferred nothing. I stated, as a fact, something. The array name, as you are using it, refers to the memory location where the data is stored. In that context, the array name is a pointer. The address that it points to can never be "OPM".

for example an array 8 bits wide

The smallest memory unit on the Arduino is a byte, which is 8 bits wide. You can not have bit-sized arrays in C.