c语言问题关于字符串的一个小问题?

#include <stdio.h>
void f(char s[])
{
printf("%d%d",sizeof(s),strlen(s));
}
void main()
{
char c[]="\0189\\\b!";
f(c);
}
为什么最后的结果是46 在f函数中sizeof那块到底经历了什么 求大佬解答

第1个回答  2019-12-01
参数传递时,数组名会退化为指针,32位程序指针位4个字节,所以sizeof是4
第2个回答  2019-12-02
c[]="\0189\\\b! 里面一共有6个字符,分别是
\01
8
9
\\
\b
!
所以是6,至于第一位是4,另一位回答了
相似回答