7.11牛课题
对两个字符a和b进行初始化:char a[]="ABCDEF";char b[]={'A','B','C','D','E','F'};则以下叙述正确的是 A
Aa数组比b数组长度长
B a与b长度相同
C a与b数组完全相同
D a和b中都存放字符串
分析:
题目说的是长度,应该是strlen
(),对a求长度为6,但是对b求长度是一个未知的大小,应该
strlen
()知道遇到
'\0'
才停止,所以a,b之间的长度不能比较。
因为 char b[]={'A','B','C','D','E','F'}; 没有字符串结束符,所以 strlen 的时候,会一直往后找,直到遇到 '\0',
b 找不到,就延着地址往上找,就把 a 的也算进去了,所以打印 strlen(b) 的结果是 12, printf b 的结果是 ABCDEFABCDEF。
做修改 char b[]={'A','B','C','D','E','F', '\0'}; 这样就一致了。
sizeof
是大小,
sizeof
(a)=7,
sizeof
(b)=6,用字符串方式赋值比用字符逐个赋值要多占一个 字节 , 用于存放字符串结束标志'\0',应该把题目的长度换成大小
。