两个数组:
char a[] = "1\023456";
char b[] = "1\000234";
问这两个数组的sizeof 和 strlen 各为多少?
结果:
sizeof(a) = 6 ,strlen(a) = 5;
sizeof(b) = 6, strlen(b) =1;
分析:
因为\023 为8进制的转义字符,所以被当做一个字符处理,大小为1, 同样 \000也为八进制的转义字符它代表0,另外strlen和sizeof的计算方式不一样的,strlen遇到结束符'\0'计算结束,而且结束符不算在内,但是sizeof不一样,他就是计算整个数组占用了多少内存,包括结束符