您的位置:首页 > 其它

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

2014-01-15 15:40 357 查看
#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是
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐