首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求教两个小疑点

2013-03-20 
求教两个小问题char* s2 new char[80]int i strlen(s2)为什么i是96;char s3[80]int i strlen(s3)

求教两个小问题
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'有可能在这块内存中,也有可能在这块内存之外

热点排行