c语言编程题,关于sizeof。具体是怎么来的?如果是strlen的话结果是什么呢?

高分请问一下,c语言编程题,关于sizeof。具体是怎么来的?如果是strlen的话结果是什么呢?
最新回答
白首不渝

2024-12-01 08:41:43

sizeof()是单目运算符,功能是返回括号内那货占用的字节数。
括号内是char s[],数组,占用字节数取决于初始化时赋值的内容。
初始化赋值的内容是"\123\\100a\t"

下面要说的,你最好比对着课本来看。
关于字符,有两种表示形式,普通形式(例如'A'),还有转义字符形式。
转义字符是由前导和后缀组成。
前导是\,表示后续跟进内容意义反转,不做常规解释;后缀就是后续跟进的内容。
转义字符的后缀,允许由特殊字母和普通数值(只允许八进制和十六进制)组成。
'\n'是最常见的由特殊字符组成的转义字符。
由于字符表示中,单引号、双引号、反斜杠意义特殊,要正常表示这三种字符,必须再次添加反斜杠前缀,也就是对应'\'','\"','\\'
而数值跟进的,\之后直接跟着数值,说明是八进制数据,最长允许3位合法的八进制数据(例如'\35');若是\之后紧跟x,就表示是十六进制,最长允许2位合法十六进制数据。

举例:
"12\789\x123\09654"
开头1和2是2个普通字符;
之后\紧跟数组,允许至多三个合法八进制,八进制范围0-7,所以只能取\7,这是第3个字符;
89是第4、5个字符;
\x十六进制,至多2个合法十六进制,所以取\x12,这是第6个
3是第7个;
再往后,不用细说了,第8个是\0。
由于\0是字符串结束标志,所以字符串就此截止,后续内容不予考虑。

你这道题目,我用空格给你间隔一下就行了
\123 \\ 1 0 0 a \t 这是字符串的组成内容,一共7个。
但是,上面说了,字符串的结束标志是\0,不管写没写,\0一定存在。
所以,题目中给定的字符串s,由8个字符组成,答案是8

至于你问的strlen函数,求字符串长度的。字符串长度不计算空字符,但空字符占用内存空间,可以机械性的记忆成长度=字节数-1
故城旧事

2024-12-01 09:21:54

sizeof只计算类型的大小,比如char是一个字符,int是四个字符(32位)等等,不过指针永远都是四个字符。那个strlen只计算字符串的大小。对于sizeof和strlen的区别是strlen不会算最后一个"\0",而sizeof会算的。不知道这样解答你明白了么
傲骨

2024-12-01 00:57:29

sizeof是指变量占的内存的大小,strlen是指字符串的长度
char a[10]="1234";
sizeof(a)=10;
strlen(a)=4;