hansest 发表于 2021-1-14 23:09:25

22:指针和数组问题

如题 小甲鱼课后练习的这段代码
#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;
}

但是我的结果是
length of str: 3
str = -42
str = -48
str = 0
请教一下是为什么?是因为我的电脑中文只占3个字节吗?

hansest 发表于 2021-1-14 23:14:02

抱歉不好意思直接Ctrl+c了 下次会注意用代码段

jackz007 发表于 2021-1-14 23:22:43

本帖最后由 jackz007 于 2021-1-14 23:26 编辑

      Linux 系统中文字符采用的是 UTF-8 编码,每个汉字固定占用 3 个字节,加上末尾的字符串结束标志字符 '\0',字符数组 str[] 分配到的内存空间刚好是 4 个字节。但是,不可以说 str 的长度是 4,str 的长度是 3,字符串结束标志字符 '\0' 不在字符串内容之列。

hansest 发表于 2021-1-15 13:27:20

jackz007 发表于 2021-1-14 23:22
Linux 系统中文字符采用的是 UTF-8 编码,每个汉字固定占用 3 个字节,加上末尾的字符串结束标志字 ...

好的 谢谢了
页: [1]
查看完整版本: 22:指针和数组问题