如果孤独感 发表于 2020-4-9 22:41:08

提问

#include <stdio.h>

int main()
{
      char str[] = "中";
      int length, i;

      length = sizeof(str) / sizeof(str);

      printf("length of str: %d\n", length);

      for (i = 0; i < length; i++)
      {
                printf("str[%d] = %d\n", i, str);
      }

      return 0;
}
https://xxx.ilovefishc.com/forum/201605/30/113637ihmcp88m1h1491y8.png

不难发现,每个中文字符在我们的系统中是占用 4 个字节的存储空间,并且都是负数。以此规律,我们只要检测一个字符对应的整型值是否为负数,如果是(中文字符),则将指针往后移动两个字节。
提问:
不是3个负数么,第四个0应该没有意义吧,下一个字符回复盖着个零么??????

人造人 发表于 2020-4-9 23:02:06

运行这个代码

#include <stdio.h>

int main()
{
      char str[] = "中文";
      int length, i;

      length = sizeof(str) / sizeof(str);

      printf("length of str: %d\n", length);

      for (i = 0; i < length; i++)
      {
                printf("str[%d] = %d\n", i, str);
      }

      return 0;
}

如果孤独感 发表于 2020-4-10 08:26:45

人造人 发表于 2020-4-9 23:02
运行这个代码

问一下最后一个0的存储是指‘\0’,这个字符串结束符么

人造人 发表于 2020-4-10 13:08:41

如果孤独感 发表于 2020-4-10 08:26
问一下最后一个0的存储是指‘\0’,这个字符串结束符么

页: [1]
查看完整版本: 提问