strlen(一个没有初始化的字符数组)
#include<stdio.h>
#include<string.h>int main(void){ char aa[10]; printf("%d",strlen(aa)); return 0;}
因为你没有对数组进行初始化啊,所以数组中每一项是一个随机值,编译器会在数组末尾往后第n个地址的值初始化为 ,n的值看编译器而定,所以,如果你定义aa[1],在vc6上,会在a[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 ",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
",strlen(acNew));
return ;
}
6、void PrintBlue()
{
charpcBlue[]={"b","l","u","e"};
printf("%s",pcBlue);
return 0;
}正确的是
A、pcBlue数组初始化时没有字符串结束符
B、数组pcBlue定义时必须指定长度
strlen是
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: 【算法导论】同时求数组的最大值和最小值
- 下一篇:没有了