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 了!
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。