Confused by C String : <p>While learning C String, I had this code snippet:`</p>

<pre><code>char s[1];
strcpy(s, "hello");
puts(s);
printf("sizeof(s) = %ld\n", sizeof(s));//the result is 1
printf("strlen(s) = %ld\n", strlen(s));//the result is 5
printf("s[4] = %c\n", s[4]);//print 'o'
</code></pre>

<p>Why do this code snippet have this strange result? I mean I can legally assign the string of length 5 to a string declared with size 1.</p>
