定义数组初始化strlen(⼀个没有初始化的字符数组)
#include<stdio.h>
#include<string.h>
int main(void){ char aa[10];    printf("%d",strlen(aa)); return 0;}
因为你没有对数组进⾏初始化啊,所以数组中每⼀项是⼀个随机值,编译器会在数组末尾往后第n个地址的值初始化为\0,n的值看编译器⽽定,所以,如果你定义aa[1],在vc6上,会在a[0]后的第七个字节变成\0,如果是10,那就是a[9]后⾯第五个,所以你输出会是15,我想这个也是为了预防内存的⾮法访问⽽做的编译器优化吧
你参考下我写的测试代码就知道了
#include <stdio.h>
int main(void)
{        int n=8;
char aa[2];
for(int i=0;i<n;i++)
printf("%d\n",aa[i]);
return 0;
} //aa数组的长度越⼤,n也就把它设得越⼤
不同的编译器也可能导致n的值不⼀样
阿朗的⼀道笔试题
void main()
{
int i;
//characNew[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/
/strlen(acNew)输出结果10
char acNew[20];
//strlen(acNew)输出结果是29
for(i=0;i<10;i++)
{
acNew='0';
}
printf("%d\n",strlen(acNew));
return ;
}
6、void PrintBlue()
{
charpcBlue[]={'b','l','u','e'};
printf("%s",pcBlue);
return 0;
}正确的是
A、pcBlue数组初始化时没有字符串结束符
B、数组pcBlue定义时必须指定长度
strlen是

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。