中级会员
 
- 积分
- 360
- 金钱
- 360
- 注册时间
- 2015-4-24
- 在线时间
- 37 小时
|
发表于 2016-5-24 19:46:43
|
显示全部楼层
64位机器,C编译器件下,汉字占两个字节,而你定义的数组char型,每个元素只有一个字节,那么你在赋值的时候,就会出现问题,例子如下:
[mw_shl_code=c,true] char b[]= "三支火把";
char *a = "你好你好";
b[0] = *a;
printf("%s\n",b);[/mw_shl_code]
以上是将指针a所指向的字符串的首地址的内容赋值给b[0];
那么输出结果如下:file:///C:\Users\szhb\AppData\Roaming\Tencent\Users\347579650\QQ\WinTemp\RichOle\)MW){X1CR0RPW@L26B]SBNA.png

[mw_shl_code=c,true] char b[]= "三支火把";
char *a = "你好你好";
b[1] = *a;
printf("%s\n",b);[/mw_shl_code]
同样将指针a所指向的字符串的首地址的内容赋值给b[1];结果如下:

可以看出,改变的只有第一个字“三”,由此可以说明,一个汉字占两个字节,
同理,将将指针a所指向的字符串的首地址的内容赋值给b[2];结果将是第二个汉字“支”发生变化,已经测试,在此不再截图。。
******************************************************
综上所述,楼主这样一种直接将汉字以char型变量的方式进行赋值是不正确的。
[img]file:///C:\Users\szhb\AppData\Roaming\Tencent\Users\347579650\QQ\WinTemp\RichOle\R[5[@JMOVC}~~H$0L%3IQIE.png[/img]
|
|