While learning C String, I had this code snippet:`
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'
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.