使用char数组的SizeOf函数

时间:2011-11-23 11:18:35

标签: c arrays sizeof

void main()
{
   char s[]="\12345s\n";
   printf("%d",sizeof(s));
}

当我编译它时,它给出了6.我没有说明为什么它给了6个8。   与{'\1','2','3','4','5','s','\n'}

一样

请有人告诉原因,我想要一些深刻而明确的解释。我会感激他们。

3 个答案:

答案 0 :(得分:12)

因为\123被认为是一个字符,所以它是一个转义序列(八进制)。因此sizeof计算5个字符'\123''4''5''s''\n'和结尾'\0'

答案 1 :(得分:2)

char s[]="\12345s\n";

\表示转义序列 如果数字最多使用3个位置,则默认为八进制。 所以\ 123将以八进制的形式进行评估 - > 8 * 8 * 1 + 8 * 2 + 3 = 83 所以,如果你打印这个,你会发现它 S45s 作为S - > Ascii相当于83 因此,大小也是4。

答案 2 :(得分:1)

char s[]="\12345s\n"

等于:

char s[] = { '\123', '4', '5', 's', '\n', 0 }

总共六个要素。