zhumengyun 发表于 2014-11-7 10:26:29

strcpy函数应用

char *st="how are you";
        char a,*p;
        strcpy(a,st);
        printf("%s",a);
输出的结果是how are you,可是数组a的长度只有5啊,为什么长度已经超过数组的长度了,还可以全部输出。

fireofsun 发表于 2014-11-7 10:46:46

的确是可以输出,但是立即就报错,说越界了,所以还是乖乖的用足够大的数组吧

694861283 发表于 2014-11-7 10:47:07

菜鸟表示应该是系统自动分配内存长度,坐等楼下大牛真正解答。

machimilk 发表于 2014-11-7 15:17:25

char a的意思你申请了5个char的字节就是5*sizeof(char) 就是5个字节,那么这5个在内存中连续字节归你管理,就好比你去洗浴中心,付了5个浴资,服务员给你5个挨着的衣橱,strcpy你copy了“how are you”,这些明显超过了5,就好比你本来应该把你穿的所有衣服放在这5个衣橱里面,但是你却把一部分衣服强行放在了第六个 第七个 第八个......衣橱里面,如果你后面没来客人还好,如果来了就给你的衣服扔了,放上他的了,就是说,你申请的5个连续的内存地址,但是他后面还是有内存地址的,你强行占有的那部分是不安全的

zhumengyun 发表于 2014-11-7 15:47:44

谢谢解答,非常感谢。
页: [1]
查看完整版本: strcpy函数应用