昨天编程的时候遇到了一个小问题,因为一时没有相同苦恼很久。恰好今天学姐考了我一个小问题,让我又把这个问题思考查阅了一番。现在跟大家分享一下。
char arr1[]={'a','b','c'};
char arr2[]="abc";
请问这俩字符串数组用sizeof求解的大小是多少?
这是为什么呢? 因为arr2[]="abc"其末尾还包括了一个\0.在计算的时候把这个\0也计算在内了。
同样的俩数组用strlen来求解呢?
如下图所示:
这是为什么呢?先说第二个3产生的原因。因为用strlen计算字符串大小的时候输出的是字符串元素的个数,不包括\0.
而第一个11的产生原因是因为strlen的求解时是用\0为结束标志的,而第一个数组中并没有\0。所以求解的11并不能作为参考。不同的操作系统中会得到不同的值说不定就是9, 8.....
这是我的理解 如果有什么不对的地方还请观看后指出。