首页 > 试题广场 >

32位系统上,如下语句的输出是多少?

[填空题]
32位系统上
char c1[]={'a','b','\0','d','e'};
char c2[]="hello";
sizeof(c1),strlen(c1),sizeof(c2),strlen(c2)值分别是1234
推荐
答案:5  2  6  5
Sizeof计算的是占用内存的大小,c1占5个字节,c2还隐含一个’\0’,占6字节
Strlen是计算字符串长度,遇到’\0’结束。c1的\0前面有两个字符,c2的\0前面就是hello,占5个字节
编辑于 2015-01-28 17:54:31 回复(0)

对字符数组,有以下几种定义方法:

1)        char str[]="12345";

或给字符串加上大括号:char str[]={"12345"};

这种方法定义时,系统会自动在字符串的末尾加上字符串结束符,即 ‘\0’,

2)        char str[10]={'1','2','3','4','5'};

这种方法定义时,系统会自动从未初始化的元素开始,将之后的元素赋为\0,如上面的数组str中的元素实际上是:'1','2','3','4','5','\0','\0','\0','\0','\0'

3)        char str[]={'1','2','3','4','5'};

这种方法定义时,系统不会自动在字符串的末尾加上字符串结束符;

此时用sizeof()函数可以正确求出其所占的内存大小;但用strlen()函数不能正确求出其长度,因为strlen是通过\0判断字符串结束的。

所以第1空应该为 5.

文章来源: http://blog.sina.com.cn/s/blog_a2e509c101014wjw.html
编辑于 2015-08-15 21:34:59 回复(0)
对字符数组,有以下几种定义方法:
1)        char str[]="12345";
或给字符串加上大括号:char str[]={"12345"};
这种方法定义时,系统会自动在字符串的末尾加上字符串结束符,即 ‘\0’,
2)        char str[10]={'1','2','3','4','5'};
这种方法定义时,系统会自动从未初始化的元素开始,将之后的元素赋为\0,如上面的数组str中的元素实际上是:'1','2','3','4','5','\0','\0','\0','\0','\0'
3)        char str[]={'1','2','3','4','5'};
这种方法定义时,系统不会自动在字符串的末尾加上字符串结束符;

Sizeof计算的是占用内存的大小,c1占5个字节,c2还隐含一个’\0’,占6字节
Strlen是计算字符串长度,遇到’\0’结束。c1的\0前面有两个字符,c2的\0前面就是hello,占5个字节

发表于 2016-03-22 15:06:04 回复(0)
这道题考察的知识点很巧妙,考察了字符串数组的定义以及sizeof()和strlen()的使用方法。
字符串在利用{ ‘ ’, ‘ ’  }这种方式定义的时候,不会自动加上'\0' 这个东西。但是字符串在利用“ ... ” 这种形式定义的时候会在最后面加上'\0'
而sizeof()函数会得到字符串的所占字符,char所占1个,同时也会计算'\0'所占的位置。
但是strlen()函数会计算字符串的长度,遇到'\0'时会自动停止计算,并不计入'\0'所占的长度。
这里在额外提一下,如果直接利用cout输出一个字符串的话,也是遇到'\0'就会停止的,后面的字符都不会输出的。
发表于 2016-10-10 11:38:55 回复(0)
strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。
而sizeof计算数据(所占内存空间,用字节数表示。  
发表于 2016-03-07 20:34:05 回复(0)
成功掉进陷阱,没看到c1里面还有个‘\0’
发表于 2017-05-08 13:58:34 回复(0)
izeof计算的是占用内存的大小,c1占5个字节,c2还隐含一个’\0’,占6字节
Strlen是计算字符串长度,遇到’\0’结束。c1的\0前面有两个字符,c2的\0前面就是hello,占5个字节
发表于 2016-06-02 10:49:47 回复(0)
第一个为什么不是6呢?
发表于 2016-02-24 19:42:57 回复(0)
哪儿错了
发表于 2016-02-01 23:11:05 回复(0)
5,2,6,5
发表于 2015-07-31 13:02:28 回复(0)
5 2 6 5
发表于 2015-01-21 15:56:44 回复(0)
5,2,6,5
发表于 2015-01-12 14:14:40 回复(0)