I am a little surprised by the following.
Example 1:
char s[100] = \"abcd\"; // declare and initialize - WORKS
Example 2:
Note that you can still do:
s[0] = 'h'; s[1] = 'e'; s[2] = 'l'; s[3] = 'l'; s[4] = 'o'; s[5] = '\0';