首页 > 试题广场 >

有以下程序,程序的输出结果是?

[单选题]

设有定义

char str[] = "Hello";
则语句
printf("%d %d", sizeof(str), strlen(str));
的输出结果是?
  • 5 5
  • 6 6
  • 6 5
  • 5 6
推荐
本题考查sizeof和strlen对字符串的处理不同之处,sizeof求出字符串的字符个数,包括结尾符。Strlen求出字符串的实际字符,不包括结尾符。所以答案为6,5,C选项正确。
编辑于 2015-02-03 17:54:35 回复(1)
sizeof包括/0
发表于 2017-08-10 16:53:54 回复(0)
sizeof 包括/0
发表于 2016-05-22 21:32:48 回复(0)
1、sizeof 和strlen
(1)sizeof

<1> sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。

<2> 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。

<3> 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。

<4>具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:
    数组——编译时分配的数组空间大小;
    指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);
    类型——该类型所占的空间大小;
    对象——对象的实际占用空间大小;
    函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。

(2)strlen
<1> strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。

<2>它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。

// 侵删

发表于 2017-10-16 22:12:46 回复(1)
sizeof包括/0
发表于 2017-02-25 19:40:09 回复(0)
strlen()用来计算指定的字符串s 的长度,不包括结束字符"\0"。
发表于 2016-02-25 16:17:27 回复(0)
sizeof 求的字符串或其他占据的字节数,单位是字节,而strlen 求的是字符串的长度,是有效字符的个数
发表于 2021-02-28 15:03:07 回复(0)
sizeof包括结尾符,strlen不包括结尾符。
发表于 2019-02-19 07:32:06 回复(0)