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",s隋文帝杨坚
trlen鸢尾花英文
(acNew));
return ;
}
6、void PrintBlue()
{
charpcBlue[]={'b哄女朋友开心的话道歉
','l','u','e'};
printf("%s",pcBlue);
return 0;
}正确的是
A、pcBlue数组初始化时没有字符串结束符
B、数组pcBlue定义时必须指定长度
strlen是