转移字符----sizeof & strlen

Posted lunais

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转移字符----sizeof & strlen相关的知识,希望对你有一定的参考价值。

在定义了数组大小时:

sizeof是运算符,表示编译时分配的空间大小,即数组定义的大小,char t[20] = "sfa"。sizeof: 20; strlen: 3.
未定义数组大小

sizeof根据实际位数确定,注意字符串隐藏的也算一位。
char s[] = "a128\ cbxdg ";
sizeof计算s大小时,为11位:a 12 8 \ c b xd g
strlen计算s大小时,为10位:strlen计算字符串长度时遇结束,但大小计算不包括

char a[] = "a0a0";
sizeof(a)大小为7,即:a 0 a 0
strlen(a)大小为2

char s[] = "a128\ cbxdg ";   打印字符数组s:转义字符:
yyy   : 1~3位八进制数所代表的任意字符,其中y的范围是0~7
xyy   : 1~2位十六进制所代表的任意字符,其中y的范围是0~F

for (int i = 0; i < sizeof(s); i++)
{
     printf("%c", s[i]);
}
a
8    cb
g

12 : 2位八进制数,十进制10,控制字符LF,表示换行,换到下一行开始

\ :表示

:  表示水平制表,即一个TAB

xd: 1位十六进制数,十进制13,控制字符CR,表示回车

注意转译字符 八进制和十六进制的问题:

char s[] = "a12345bx1221gxay";

八进制最多选3位,即123,当该八进制数转化为十进制后大于ASCII码表最大值127时,是一个乱码。

十六进制最多选两位,但截取x后的整数的最后2位处理,前面的位数丢弃,即截断,即丢弃12,十六进制x21,十进制33表示!

所以长度计算中:

sizeof是10位,即:a 123 4 5 b x21 g xa y

strlen是9位,即:a 123 4 5 b x21 g xa y

 











以上是关于转移字符----sizeof & strlen的主要内容,如果未能解决你的问题,请参考以下文章

4.5 列表

[php-src] Php扩展开发的琐碎注意点细节

[php-src] Php扩展开发的琐碎注意点细节

python字符串

为啥 sizeof(string) == 32?

C: 当字符数组首指针转化成char *指针,sizeof(*ptr)不为array的size