C语言学习笔记18——C语言中的字符串
2018-02-28 13:49
417 查看
字符串的概念
字符串是有序字符的集合字符串是程序中的基本元素之一
C语言中没有字符串的概念
C语言中通过特殊的字符数组模拟字符串
C语言中的字符串是以 ‘\0’ 结尾的字符数组
编译器总是会在字符串字面量的末尾添加 ‘\0’
字符串与字符数组
在C语言中:双引号引用的单个或多个字符是一种特殊的字面量
存储于程序的全局只读存储区
本质为字符数组, 编译器自动在结尾加上 ‘\0’字符
字符串字面量
字符串字面量的本质是一个数组字符串字面量可以看作常量指针
字符串字面量中的字符不可改变
字符串字面量至少包含一个字符
/* 测试代码 */ #include <stdio.h> int main() { char b = "abc"[0]; // a char c = *("123" + 1); // 2 char t = *""; // 0 printf("%c\n", b); printf("%c\n", c); printf("%d\n", t); printf("%s\n", "Hello"); // hello printf("%p\n", "World"); // 00403076 return 0; }
运行结果
a 2 0 Hello 00403076
字符串的长度
字符串的长度就是**字符串所包含字符的个数字符串长度指的是第一个 ‘\0’ 字符前出现的字符个数
通过 ‘\0’ 结束符来确定字符串的长度
函数 strlen 用于返回字符串的长度
字符串相关函数都依赖于结束符 ‘\0’
字符串的相等比较
字符串之间的相等比较需要用函数 strcmp 完成不可直接用 == 进行字符串直接的比较
完全相同的字符串字面量的 == 比较结果为 false (地址不同)
注意: 一些现代编译器能将相同的字符串字面量映射到同一个无名字符数组, 因此 == 比较结果为 true 但我们不能编写依赖特殊编译器的代码
/* 测试代码 */ #include <stdio.h> #include <string.h> int main() { #define S1 "D.T.Software" #define S2 "D.T.Software" if( strcmp(S1, S2) == 0 ) { printf("Equal\n"); } else { printf("Non Equal\n"); } return 0; }
运行结果
Equal
相关文章推荐
- C语言学习笔记(16) c语言字符串分析
- 十进制与字符串的转换,正向和逆向互转-C语言学习笔记2
- Go语言学习笔记----与C语言的比较学习
- C语言学习笔记--------伊能C语言学习笔记------C语言结构体字节对齐机制
- C语言学习笔记(18多级指针)
- Perl语言学习笔记 14 字符串与排序
- C语言学习笔记 (一) C语言的关键字
- C语言之字符串学习笔记
- 学习笔记4-C语言数组和字符串
- C语言学习笔记之字符串I/O(gets()函数和puts()函数)
- C语言学习笔记 (二) C语言的语句
- C语言学习笔记----伊能C语言学习笔记---*号的作用
- 黑马程序员----C 语言学习笔记之数组指针与字符串指针
- C语言学习笔记----伊能C语言学习笔记-----函数的副本机制
- ios学习笔记图片+图片解释(c语言 oc语言 ios控件 ios小项目 ios小功能 swift都有而且笔记完整喔)
- C语言学习笔记:15_c语言中的进制操作.c
- C语言学习笔记(六)字符串
- Java学习笔记_18_字符串、包装类、原始数据类剪得转换
- C语言学习笔记--------伊能C语言学习笔记----使用指针来解决函数的副本机制
- c语言学习笔记18之函数2