c与c++字符串赋值
最近用c++写的一个程序,我想用一个const char *p
对一个char head[2]
赋值,我使用strcpy
赋值之后一直出现错误。我就写了个小程序去验证了一下。
程序
|
运行结果
类中直接指针幅值 |
分析
类中指针赋值
直接通过指针进行赋值:
_head[0] = *p++;
_head[1] = *p++;输出:
HJ?T�+�02
HJ
之后带有一串乱码,应该是由于c++在指针赋值时没有将第三位赋值为\0
,导致打印输出时识别不到结束符一直输出。strcpy赋值
直接用
strcpy
,看起来好像还行,但是到了下一步就发现问题了。strncpy两字节
再新建一个类,然后对该类的
_head
进行strncpy
两个字节。输出:
应该是由于HJHJ02
strncpy
也没有在最后添加\0
,并且新创建的变量的地址正好在之前变量的地址之前,最后出现了这个现象。strncpy三字节
再新建一个类,然后对该类的
_head
进行strncpy
三个字节。输出:
说明这个时候是在字符串结尾添加了HJ02
\0
。类外直接指针幅值
不使用类的方式,直接用函数的方式,进行赋值。
输出:
HJ02
是没有问题的。