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是
相关文章推荐
- C语言中strlen求字符串长度,求字符数组长度(空字符,数字0,字符0,数组部分初始化)
- 九度oj+原始一个字符串左右交换字符最少步数变成含有2012字串+bfs及字符串和整型转换以及没有标记visit数组大小,只能用stl中的vecotr,实际上set更好。有count函数
- 老生常谈:一个没有\0的字符数组使用时要注意了
- 字符数组中关于strlen的问题(未初始化)
- 关于strlen 计算未初始化的字符数组长度
- C语言中strlen求字符串长度,求字符数组长度(空字符,数字0,字符0,数组部分初始化)
- 关于strlen 和 wstlen_s 操作未初始化的字符数组
- 如果字符串的一个子串(其长度大于 1)的各个字符均相同,则称之为等值子串。试设计一算法,求出串S中的最大等值子串 函数返回最大等值子串的长度,如果没有则返回1。 例如: 若S= “abc123abc1
- 一个数组存储很多英文字母,输出没有存储的字母
- 题目:输入一个字符数组,输出所有的排列。
- 关于字符数组的初始化
- 字符数组的初始化
- C 语言字符数组的定义与初始化
- 当字符数组中没有结束符'\0'
- 字符指针char* 和 字符数组的一个小例子
- 字符数组初始化
- 笔试题-输入一个字符数组将这些字符串按顺序合并输出-指针数组-数组指针-函数指针-指针函数
- 字符数组,初始化,修改,结束测试 逆置 BGK
- 这是一个我面试某公司的算法题目:对一个字符数组进行排序,根据给定的字符,大于它的,放在数组的左边,小于它的,放在数组的右边,且数组中的元素之间的相对位置要保持不变。
- git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base'<--base<--A<--A' ^ | --- B<--B' 小米工程师常常需要寻找两个分支最近的分割点,即base.假设git 树是多叉树,请实现一个算法,计算git树上任意两点的最近分割点。 (假设git树节点数为n,用邻接矩阵的形式表示git树:字符串数组matrix包含n个字符串,每个字符串由字符'0