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个字节吗? 抱歉不好意思直接Ctrl+c了 下次会注意用代码段 本帖最后由 jackz007 于 2021-1-14 23:26 编辑
Linux 系统中文字符采用的是 UTF-8 编码,每个汉字固定占用 3 个字节,加上末尾的字符串结束标志字符 '\0',字符数组 str[] 分配到的内存空间刚好是 4 个字节。但是,不可以说 str 的长度是 4,str 的长度是 3,字符串结束标志字符 '\0' 不在字符串内容之列。 jackz007 发表于 2021-1-14 23:22
Linux 系统中文字符采用的是 UTF-8 编码,每个汉字固定占用 3 个字节,加上末尾的字符串结束标志字 ...
好的 谢谢了
页:
[1]