strcpy函数应用
char *st="how are you";char a,*p;
strcpy(a,st);
printf("%s",a);
输出的结果是how are you,可是数组a的长度只有5啊,为什么长度已经超过数组的长度了,还可以全部输出。
的确是可以输出,但是立即就报错,说越界了,所以还是乖乖的用足够大的数组吧 菜鸟表示应该是系统自动分配内存长度,坐等楼下大牛真正解答。 char a的意思你申请了5个char的字节就是5*sizeof(char) 就是5个字节,那么这5个在内存中连续字节归你管理,就好比你去洗浴中心,付了5个浴资,服务员给你5个挨着的衣橱,strcpy你copy了“how are you”,这些明显超过了5,就好比你本来应该把你穿的所有衣服放在这5个衣橱里面,但是你却把一部分衣服强行放在了第六个 第七个 第八个......衣橱里面,如果你后面没来客人还好,如果来了就给你的衣服扔了,放上他的了,就是说,你申请的5个连续的内存地址,但是他后面还是有内存地址的,你强行占有的那部分是不安全的 谢谢解答,非常感谢。
页:
[1]