求教两个小问题
char* s2 = new char[80];
int i = strlen(s2);
为什么i是96;
char s3[80];
int i = strlen(s3);
为什么i是91;
不能理解,求教!!!!
[解决办法]
strlen是遇到 '\0'就结束,而对于刚new出来的内存,它们里面是什么内容其实是不一定的。
也就是说,你这里i是多少都有可能
[解决办法]
初始化问题。定义了以后没有初始化,其中的内容不确定。strlen的原理就是从指定的地址开始计算,如果字符是'\0'就停止计算,输出计算的值。这样以后就都是0了
char* s2 = new char[80];
memset(s2 ,0 ,80);
int i = strlen(s2);
char s3[80] = {0};
int j = strlen(s3);
[解决办法]
局部内部类型定义变量时不会自动进行初始化,所有对未初始化的变量的操作(除赋值)都是未定义的,结果未知,一切皆有可能
[解决办法]
数组木有初始化
strlen()是判断到'\0'为止的
没有初始化,那么'\0'有可能在这块内存中,也有可能在这块内存之外