一个关于数组的有关问题

一个关于数组的问题这样的一个程序#include stdio.h#include string.hmain(){inticharc[5]puts(get

一个关于数组的问题
这样的一个程序;
#include <stdio.h>
#include <string.h>

main()

{     int   i;
char   c[5];
                puts(gets(c));
                  getch();
}
当我输入:   abcdefghijkelmn   时为什么还能输出   :  
abcdefghijkelmn呢?  
想不通.请大家指教.

[解决办法]
gets函数参数传进去是指针,所以定义的数据大小并不能限制输入字符的个数。程序是把输入的字符存在以c指向的内存地址连续的内存(栈内存)。而且一直到最后一个字符的下一个才有字符串结束符 '\0 ',这也是puts能显示整个字符串的原因。