字符数组和字符串总结
2016-12-17 15:24
127 查看
一.字符数组 : 1.初始化 1.动态初始化 : arr[n1] = x; arr[n2] = x; .... arr = x; n <= length 1.n = length --- 动态完全初始化 2.n < length --- 动态部分初始化 *未初始化元素,对应内存空间存放垃圾值 2.静态初始化 : char name[length] = {e1, e2, e3, ......... eN}; n <= length 1.n = length --- 静态完全初始化 2.n < length --- 静态部分初始化 *未初始化元素由系统自动默认初始化 --- 使用对应数据类型默认值初始化 *利用编译器这一特点,可以很方便的把所有元素置为空字符 char arr[10] = {0}; --- 第一个元素手动初始化为字符0即空null,因为是静态部分初始化所以剩余元素,系统自动默认初始化 --- 字符默认值是空字符'\0'即空null
*字符0对应的十进制是十进制0,当以十进制格式化输出时,输出值为0
3.自动识别长度的静态完全初始化 : char arr[] = {1, 2, 3, 4); 4.引入字符串概念后,字符数组又多了一种初始化方式 1.为便于用字符数组存储和处理字符串,C允许直接用字符串常量初始化数组 1.指定长度 1.char c[6] = {"hello"}; 2.char c[6] = "hello"; 2.自动识别长度 1.char c[] = {"hello"}; 2.char c[] = "hello"; 2.在gcc编译器下测试可知 1.字符型默认值为空字符'\0',对应ASCII码为0 二.字符串 0.字符数组和字符串 1.相同点 1.都是内存中一段连续的char空间 2.字符数组没有结束标识符,字符串有结束标识符 3.当以字符数组表示和存储字符串时,必须把结束标识符'\0'也存入字符数组 *此时的字符数组从内存来看,实际上就是一个字符串 *若不存字符串结束标识符'\0',只是一个字符数组,不是字符串 1.字符串 --- 以双引号定界 且 以空字符'\0'标识结束 2.C语言中有字符串概念,但没有字符串这种数据类型,因而通常需要借助字符数组来存储和处理字符串 1.当把一个字符串存入一个字符数组时,也把标识结束的字符’\0’存入数组,因此该字符数组的长度是字符串实际字符数+1 eg : 字符串 "hello" char c[6] {1, 2, 3, 4, 5, '\0'}; 3.为便于用字符数组存储和处理字符串,C允许直接用字符串常量初始化数组 --- 对于字符数组来说,有多了一种初始化方式 1.指定长度 1.char c[6] = {"hello"}; 2.char c[6] = "hello"; 2.自动识别长度 1.char c[] = {"hello"}; 2.char c[] = "hello"; 4.获取字符串长度 字符串 : "hello" 字符数组 : char s[10] = "hello"; 1.sizeof运算符 : --- 获取的是被获取对象在内存中的大小,以字节为单位 --- 因为C中字符占1字节,因而获取的大小即为字符数组长度 1.获取字符串大小 sizeof("hello") 2.获取字符数组大小 : sizeof(s); 2.函数strlen(); --- 获取字符串所占内存的有效字节数 1.获取字符串长度 2.获取字符数组长度 --- 前提 : 该数组正确存储了字符串,即存入了结束标识符'\0' *函数strlen()获取字符串 或 正确存储字符串的数组的长度实际上是对数组或字符数组的遍历 --- '\0'为结束条件 *获取字符数组 char arr[5] = {'a', 'b', '\0', 'c', '\0'}; strlen(arr) = 2 从内存来看,该数组可以表示两个字符串 : "abc\0" 和 "c\0"
5.总结 : 1.C中的字符串本质是以'\0'作为结束标识符的字符数组 char arr[5] = {'a', 'b', 'c', '\0', 'd'}; char arr2[5] = {'a', 'b', 'b'}; printf("%s", arr); //abc printf("%s", arr2); //abc + 垃圾值 --- 字符串以'\0'作为结束标识符,当找不到时会在对应内存区域继续往后查找,直到遇到'\0',因而会读取到垃圾值
相关文章推荐
- c/c++ 字符数组、字符指针和字符串类型总结帖
- 字符串的存储方式,以及sizeof()(字符数组,字符指针,Sizeof总结)
- .字符数组、字符串与string类总结
- 字符串、字符数组、数组、指针关系总结
- c中给字符数组,字符串指针赋值的方法总结
- c/c++ 字符数组、字符指针和字符串类型总结帖
- 字符数组与字符串,字符数组与字符指针(总结大全)
- 数组去重,字符串查找最多字符方法总结
- c中给字符数组,字符串指针赋值的方法总结
- C/C++(字符串处理)字符指针、字符数组用法大总结
- 字符串、字符数组总结
- C/C++(字符串处理)字符指针、字符数组用法大总结
- (26)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第一节
- c++中字符数组或者字符串中的内容在VS debug环境中不能完全显示
- C语言中字符数组和字符串指针分析
- 函数内 声明一个字符数组和一个指向字符串数组的指针 区别
- 字符数组转换字符串,字符串数组转换为字符串的问题
- 一个扩展后的Split方法,可根据字符串分隔字符,返回字符数组
- (27)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第二节
- (33)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第八节