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

关于指针类型new得很奇怪的有关问题

2012-02-11 
关于指针类型new得很奇怪的问题char*p1newchar[159]cout strlen(p1)输出177char*p1newchar[10]cou

关于指针类型new得很奇怪的问题
char   *p1=new   char[159];
                  cout < <strlen(p1);
输出177
char   *p1=new   char[10];
                  cout < <strlen(p1);
输出17

char   *p1=new   char[10*sizeof(char)];
                  cout < <strlen(p1);
依然是17   这是咋回事?


[解决办法]
strlen(p1);
strlen是计算p1开始到结束符\0的字符数
你new之后没有字符数组值是随机的
所以函数结果并不一定是字符数组的长度
[解决办法]
char *p1=new char[159];
cout < <strlen(p1);
===>
1. p1分配了内存, 但没有初始化每个char的值!
2. strlen()求的是以 '\0 '结尾的字符串的长度, 而p1中的char没有哪个char的值初始化为
'\0 ', 所以结果是随机的!

热点排行