1, c/c++
如果是字符数组没有赋初值,则debug和release版的strlen(str)结果是不一样的.
sizeof怎样都是分配的那样。
#include <iostream> using namespace std; void main() { char str[10]; cout << str << endl; cout << "len is " << strlen(str) << endl; cout << "len is " << sizeof(str) << endl; getchar(); }
为了debug和release的结果一样最后定义完变量就初始化,不然可能程序出错了很难找到那里有问题。
关于strlen和sizeof的详细资料看微软的官方文档
strlen
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。
sizeof
C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来!