char* 型字符数组中间如果有值为0的字符,如何正确取得这个数组的大小?

代码是这样的:
char* str=new char[4];
str[0]=120;
str[1]=12;
str[2]=0;
str[3]=4;
int i=strlen(str);//i=2,如何取得str的真实长度6啊?
如何取得str的长度4,不是6啊,打错了。

char* str=new char[4];
str仅仅是个指针,它指向的那块空间的长度是无法求出的
实际应用中这样的要求基本不会存在,如果这个数组的长度确定是4了,那就弄个自动数组就行了比如char str[4];这样就可以用sizeof操作符得出具体长度
如果真的要求在运行期动态分配长度,那么必然会有一个表示长度的变量,那么用这个变量就行了,比如
int len;
cin>>len;
char* str= new char[len];
要长度就去找len啊
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-15
字符型数组与不要混为一谈!
字符串是以'\0'为结尾的一个字符型数组数据,识别其长度以'\0'为检测标准。C提供了很多有关字符串操作的函数:strlen strcpy strcmp等等
字符数组与其它类型的数组操作是相同的,在定义数组的程序体部分,我们可以通过sizeof( acVar )获得数组的大小。
但是,如果传到一个子函数中去,则如果没有传递数组大小,则不可能有方法获取其大小的!本回答被提问者采纳
第2个回答  2012-01-09
如果是char str[4];这样定义的话可以用sizeof(str).
既然你定义了数组,以后还用到数组长度的话,建议用宏定义长度。
#define STR_LEN 4
char * str = new char[STR_LEN];
以后要用长度直接用STR_LEN就行了。
第3个回答  2012-01-09
如果你想要知道数组的长度,而不是字符串的长度,那么你创建这个数组时的这个长度4就是了char* str=new char[4];
你要知道你这儿的0是字符串结束符,相当于\0,而不是‘0’
第4个回答  2012-01-11
C、C++里指针指向的是数组申请的内存地址,所以这样求实际长度是不对的,你字符数组初始化大小就是你new的时候设定的。再者,你应该分清字符串和字符数组的区别,字符串里依'\0'为结束标志。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网