debug, release strlen与sizeof

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的详细资料看微软的官方文档

MSDN: strlensizeof


strlen

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。

sizeof 
C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来!


猜你喜欢

转载自blog.csdn.net/moonlightpeng/article/details/80588180