输出的是5 4
strlen是计算字符串的长度,不包括\0。\n是一个字符,123是3个字符,\\是转意字符也就是\。所以一共是5。
因为s是指针,指针的大小就是4,所以输出的就是四
另外,如果定义成
char s[]="\n123\\"; 则sizeof(s)就是6了
strlen()是对char * s处理,结果是这个字符串的长度,也就是5
sizeof()是看s这个变量在内存中占用的长度,也就是4,因为它在头文件中被typedef为unsigned int类型。注意不同的电脑可能不一样,但一般现在int也是4个字节了。
你可以吧字符串改长了试试,第一个值会变,第二个还是4.
但是char s[10]的话,sizeof()的结果就是10了
输出5,4. \n ,1 ,2, 3, \\ 5个,sizeof(s)=4,因为s是个指针。