C语言 new char

来源:百度知道 编辑:UC知道 时间:2024/05/24 01:20:50
char *y = new char[10];

然后 输出 strlen(y)

为什么不是10呢?
这个strlen(y)是对y进行赋值等操作之后再输出的 它的值要比10更大

结果值比10大的原因,可能是由于你在字符串赋值时,没有在字符串的结尾加"\0"吧。
由于strlen()函数是查找"\0"为依据,来统计字符数的,字符串结尾是用"\0"表示结束的。
另外,你这不是C语言,是C++;在C语言里,还没new操作符,申请内存是用的malloc()函数。

strlen是求里面字符的个数,因为里面没有存,自然不是10

因为strlen是遇到\0结尾,里面没有\0,就一直找,直到找到\0,所以可能会比10大的多

strlen 按字符串结束标志"/0"计算长度。 如果Y中没存储字符串的话没什么意义,得出的结果就是胡来的。

你申请的10个空间并不一定都使用
strlen是你字符串的实际长度

比10大就说明你的串长度大于10呗```

strlen是计算从字符串地址开始,一直到'\0'的长度(不算‘\0’),你的说的空格算是字符串长度。
你没有对数组赋值 默认都为'\0'

你这是要干什么?
可以告诉我么?

strlen(y) 输出是1是么?