为什么答案是15?
#include<stdio.h>
int main()
{
char a[10];//未初始化怎么会是15呢
char b[10]="AAAAAAAAAAAAAAAAAAAA";//为什么不越界???????
printf("%d ",strlen(a));
}
[解决办法]
[解决办法]
[解决办法]
这个是越界了,会占用数组后面内存,会出现未定义的错误。
也有可能恰好没有占用有用的内存所以没有报错。
而strlen这个函数是字符串的长度,遇到'\0'才结束,不管是否到数组的结尾。
[解决办法]
[解决办法]
- C/C++ code
永远不要忘记字符串结束符 null在使用处理 C 风格字符串的标准库函数时,牢记字符串必须以结束符 null结束:char ca[] = {'C', '+', '+'}; // not null-terminatedcout << strlen(ca) << endl; // disaster: ca isn'tnull-terminated在这个例题中,ca 是一个没有 null 结束符的字符数组,则计算的结果不可预料。标准库函数 strlen 总是假定其参数字符串以 null 字符结束,当调用该标准库函数时,系统将会从实参 ca 指向的内存空间开始一直搜索结束符,直到恰好遇到 null 为止。strlen 返回这一段内存空间中总共有多少个字符,无论如何这个数值不可能是正确的。