字符与字符编码
- c语言中一个英文字符我们用一个字符来表示;
assic码表
输出字符
- %c告诉我们要把ch里面的数据当做字符来使用
- 读取内存数据99–>c
字符串
结尾字符
- c语言的字符串是以
\0
结尾的(二进制 0,区别与字符0)
- 字符串中的每个字符,连续存放在一段内存里面,内存里面存放的是字符所对应的二进制编码;
- 结束后以结尾符号
\0
–>二进制数据0结束 - 字符串的内存除了存放内存数据以外还有一个结尾符号,
- 所以需要多一个字节来存放一个字符串,存完内容以后,多出来的字节存放结尾符号;
- 在做存字符串的时候,要保证分配的内存,能够存下字符串,字符串的字节+1(结尾符号)
字符串的定义
常量字符串定义,一旦定义常驻内存,不可修改;
- 全局的,只读的,不可修改的,分配在代码段上的;
"hello"
,俩个双引号,中间是内容;- 有一个char*的指针变量来指向这个常量字符串
- 指向的是字符串内存的第一个字符的首地址;
- 在代码段上定义了一个常量字符串,并且有一个指针变量指向了这个常量字符串的第一个字符开始的位置
- 输出一个字符串,用%s的格式符号
从指针变量的地址开始,一个一个字符的输出,直到遇到结尾符;
- 如果多个地方使用同一个常量字符串,它们是同一块内存;
- 常量字符串是定义在代码段上的, –》只读的
- 使用指针来修改代码段上的内存,操作系统会抛出异常
非常量字符串
- 内存(全局,栈,堆),内容,结尾符号;
- Hello
- 动态内存分配;
- 可以使用一个指针变量来保存字符串的起始地址;
- 内容+ 结尾符号,首地址就能代表这个字符串;
- 怎么求字符串的长度;
- 什么是字符串的长度,也就是说字符串里面包含的字符的个数;
"Hello"-->5个字符,"test"--> 4个字符
- 字符串–>内存的地址,存放了字符+结尾符号
- char* 指针就能表示字符串
- 统计英文字符串字符个数,是这样写的
- 中文不一样;
把字符串,由A拷贝到B;B的内存足够容纳A
字符串比较函数,比较俩个字符串是否相等
字符串操作函数
- strdup()
- strncpy(),strncmp()
- 提示:strcpy,strcmp,strdup,strlen,支持中文的
- 数组名字,sizeof(数组名字)返回的是数组所占的字节数;
- -