一 题目
原题号:16
定义chardog[]= "wang\0miao";那么sizeof(dog)与strlen(dog)分别是多少:
A 9,9 B 9,4 C 10,4 D 4,4
答案:C
二 程序验证
#include <string.h>
int main(int argc, char **argv)
{
char dog[] = "wang\0miao";
int lenBySizeOf = sizeof(dog);
int lenByStrlen = strlen(dog);
printf("sizeof of dog is: %d,\nstrlen of dog is: %d\n",lenBySizeOf,lenByStrlen);
return 0;
}
运行结果:
三 解析:
1 sizeof
sizeof是c语言的单目运算符,如同 ++,并不是函数。
返回一个size_t类型的值,表示操作数的存储字节数。
对字符串进行求存储字节数时,包括字符串的结束标志'\0'.
因此,dog的sizeof为可数的9个字节加上1个隐藏的结束符'\o',共10个字节。
2 strlen
字符串函数,返回的是字符串地址到第一个'\0'字符中间的字符数目。不包括'\0'.
因此,dog的strlen值为第一个'\o'之前的“wang”字符的大小,为4。
参考:
1
http://unix-cd.com/vc/www/23/2007-11/9848.html
2
http://itlab.idcquan.com/c/skill/829127.html