对字符串和字符数组的理解
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\
总结:
字符数组 为了防止出现乱码,务必要初始化。
相关文章推荐
- 如何理解不能用字符串给字符数组赋值
- 关于数组指针,指针数组,双重数组,二维矩阵,字符串数组,双重字符指针的理解
- 通过strstr函数来深入理解逐个给字符数组赋值和用字符串给字符数组赋值的区别
- 字符串数组&字符指针理解(一)
- 对C语言中的字符串,字符数组以及用指针表示字符串的理解
- C语言 字符数组和字符串指针的理解
- Exe 3 —— n^n幂和 (长整数的乘法和加法,以及对于字符数组和字符串的理解)
- Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- 8.字符数组 ( 字符串多 '\0')
- C语言字符串与字符数组
- C/C++字符串,字符数组,字符指针及其相互静态拷贝与追加的安全问题解决方案(1)
- 字符数组与字符串的区别及联系
- 字符串相互转字符数组 string byte 数组 array of byte
- 字符串匹配的KMP算法---理解next数组的意义
- Java中字符串按照某个字符拆分为字符数组
- 字符数组和字符串的区别
- C#字符串转字符数组
- 编程序将一个字符串的前N个子字符送到一个字符型数组中去,然后再加上一个'\0'(不允许使用strcoy(str1,str2,n)函数)。
- C语言中字符串和字符数组的区别
- C语言基础知识之(十四):指针和字符数组、字符串数组