
代码越界了.
分配了5个字符, 实际赋值了8个.
导致异常.
改成
#include<stdio.h>#include<string.h>
int main()
{
char a[10] = "windows"//8以上均可.
printf("strlen(a) = %d.\n",strlen(a))
return 0
}
不管什么平台,都会是7
你换台机器就不是5 8的值了! 所谓的固定,是你机器内存情况刚好处在那种状态下。
你没有\0,strlen()就会自动去找\0位置,这个0位置在什么位置是不确定的。
strlen(s)函数,从s首地址开始一直统计到\0位置,其中有几个字节就输出长度为几!
#include <stdio.h>#include <string.h>
void main()
{
int i=0 //这里加上这个,你再去试,结果一定会有变化的,原理,自己思考一下吧
char p[] = {1,2,3,4,5,66,7,}
char q[] = {1,2,3,4}
char r[] = {1,2,3,4}
printf("length:%d\n",strlen(p))
printf("length2:%d\n",strlen(q))
printf("length3:%d\n",strlen(r))
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)