入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

strlen(一个没有初始化的字符数组)

创建时间:2014-01-15 投稿人: 浏览次数:970
#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。