您的位置:首页 > 其它

对字符串和字符数组的理解

2012-01-07 23:46 127 查看
fdsfsd输入sdfsfds


高中的时候,一直没有搞懂字符串与字符数组的关系。现在知道了其中的一点点,于是就写了下来。

字符数组可以用cout出来,而不用一个一个地用下标索引。

#include<iostream>
#include<conio.h>
using namespace std;
void main()
{
char names[6];
for(int k=0;k<6;++k) names[k]='\0';
for(int i=0;i<5;i++)
cin>>names[i];
cout<<names<<endl;
getch();
}


输出数组时,输出的内容会一直读到字符串的0\为止,如果读取的字符串中没有0\ 那么,就会一直读取相邻内存区段的值,知道0\。

在内存中,0\是很常见的。 这也就导致输出字符数组时,如果不注意就会出现乱码。

下面注释第7行,来测试结果。

#include<iostream>
#include<conio.h>
using namespace std;
void main()
{
char names[6];
//for(int k=0;k<6;++k) names[k]='\0';
for(int i=0;i<5;i++)
cin>>names[i];
cout<<names<<endl;
getch();
}


输入



输出



在这里就出现了乱码。

[b]分析原因[/b]:

字符数组没有初始化,而数组长度是6,用户输入的数据只能截取6个,但是这6个中没有出现0\

所以 cout显示的结果,一直到names这数组的相邻区域,直到发现了0\

总结

字符数组 为了防止出现乱码,务必要初始化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: