E17.【C语言】练习:sizeof和strlen的辨析
先回顾http://t.csdnimg.cn/aYHl6
1.
char acX[] = "abcdefg";
char acY[] = { 'a','b','c','d','e','f','g'};
以下说法正确的是( )
A.数组acX和数组acY等价
B.数组acX和数组acY的长度相同
C.sizeof(acX)>sizeof (acY)
D.strlen (acX)>strlen (acY)
分析:A.数组等价的定义:类型一样,表达式相同,显然:字符串以\0结束,而单个字符没有,需要程序向后读取 A不选
B,D.acY[]长度未知,'g'后\0的出现是随机的,因此strlen (acX)>或=strlen (acY),B,D不选
C.sizeof这里求的是数组大小,数组大小等于有效元素(含\0)的个数*每个元素的大小,sizeof(acX) = 8*4=32,sizeof(acY) = 7*4=28(默认4字节) 选C
2.下面代码的结果是:( )
#include <stdio.h>
int main()
{char str[] = "hello bit";printf("%d %d\n", sizeof(str), strlen(str));return 0;
}
分析:hello bit\0
sizeof()算\0,strlen()不算\0
结果:10 9