UTF-8是一种变长字符编码。对于ASCII字符,仍然采用一个字节表示,但对于其他Unicode字符和汉字,则采用两个、三个甚至四个字节表示。
定义字符串数组时,如果你不确定字符串大小,在初始化时可以忽略数组大小,编译器会自动帮你计算
char a[] = "我爱你";
另外当字符串里含有汉字时,strlen()
函数返回的仍然是字符串的大小,而不是汉字的个数。
参考
https://en.wikipedia.org/wiki/UTF-8
你可以不用规定字节大小啊,而且UTF-8下汉字是三字节,GBK下汉字也确实是两个字节,不过不用管的。
char *self = "咸鱼";
这个根据计算机底层的设计有关,一般gbk占用两个字节,utf-8占用三个字节,汉字是经过计算机底层的语言处理系统进行管理,跟其规定的机内码,字形码,输出码等有关,一般字符串最好用指针指向比较好.