freshmanjq
2015-07-10 15:30
采纳率: 0%
浏览 1.8k

c语言中文字符串的存放顺序

在vc++上做了如下实现:
void main()
{
char pc = "我";
unsigned short me = unsigned short('我');
char *pc1 = (char
)&me;

system("pause");

}
结果如图所示:
图片说明
可见pc指针指向的‘我’ 和 me中存放的我‘我’字节顺序不一样,
这是什么原因?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • frank_20080215 2015-07-10 15:33

    pc = "我";改成 pc = L"我";

    点赞 评论
  • devmiao 2015-07-10 15:38

    你是一个很细心的同学。这很好。
    Intel处理器是一种小端处理器,对于short类型,它在内存中的分布是倒过来的。但是char不受这个约束。

    http://www.cnblogs.com/graphics/archive/2011/04/22/2010662.html

    点赞 评论
  • 91program 2015-07-11 01:00

    对于多字节,Windows 平台是低字节优先的,称为小端;网络字节一般是高字节优先的,称为大端。
    单字节,就按实际的顺序存贮。

    点赞 评论
  • frank_20080215 2015-07-11 01:27

    试用TCHAR *pc = "我";

    点赞 评论
  • freshmanjq 2015-07-11 01:46

    用TCHAR 结果
    图片说明

    点赞 评论
  • freshmanjq 2015-07-11 01:47

    用TCHAR 结果
    图片说明

    点赞 评论
  • GKatHere 2015-07-11 04:54

    如下, 单字节排序不变, 多字节会倒过来

                char* pc = "我";                                        //   ce    d2
                char pc2[] = "ab";                                     //   61    62    00
                unsigned short me = unsigned short('我');  //   d2    ce
                unsigned short me2 = 'ab';                       //   62    61
    
                //   所以在使用多字节表示字符串的时候要倒着写, 比如 mine 
                unsigned long signature  = 'enim';  
    
    点赞 评论

相关推荐 更多相似问题