有以下程序: main() { char s[]="\n123\\"; printf(’%d,%d\n’,strlen(s),sizeof(s)); } 执行后输出结果是( )。

admin2010-01-10  13

问题 有以下程序:    main()    {    char s[]="\n123\\";    printf(’%d,%d\n’,strlen(s),sizeof(s));    }    执行后输出结果是(  )。

选项 A、赋初值的字符串有错
B、6,7
C、5,6
D、6,6

答案4

解析 本题在定义字符数组时没有定义数组长度,但用字符常量给数组赋了初值,这时初值的个数即为数组的长度,故数组长度为6(包括’\0’)。字符串的长度为有效字符的个数5。strlen(s)返回值为串中字符的个数(不计最后的’\0’),则输出值为5。sizeof (s)计算数组所占的字节数,包含’\0’,则输出值为6。因此,C选项正确。
转载请注明原文地址:https://kaotiyun.com/show/rUWp777K
0

最新回复(0)