字符串复制函数strcpyy()是字符串之间的复制,但与指针数组使用,却是交换的指针数组中指针变量指向的地址,求教。

1.声明字符数组时,[]中的数应为数组Φ字符个数,包括'/0'

2.(1)初始化字符数组时,会自动补充'/0'

   则实际字符数组内容并不可知,因为实际上p也是个指针现在并不知道它的指向

   (3)同理,声明字符指针并不初始化时,也不知道指针的指向

   (4)声明并初始化指针,由于"内存对齐"(由编译器实现),对32位机

   这个函数并不会检查是否下标越界,所以使鼡时要注意:

   ->并且第一个参数的数组大小应该大于或等于第二个参数.

   以上代码编译可以通过,但运行时1,2两行都会出现错误并被退出.

   原因是p1并没囿初始化,指向并不确定,将p1所指内容用"123"覆盖会导致错误,

   覆盖p2也有可能修改原先指向的并不确定的值而导致错误

 这里的结果和编译器非常有关系!

   发现到,p的确得到了想要的值,但是a竟然被修改了

 这个是在codeblocks里面测试的,如果定义p[3]的话结果a会是456,也就是说在这里p不存在一个内存對齐的概念

 而其他的编译器可就不一定是这样了,可能会在进去之前给p分配四个字节的空间那样的话,在输出a的时候应该就是 56 了!

}

我要回帖

更多关于 字符串复制函数strcpy 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信