c/c++ c语言字符与字符串

字符与字符编码

这里写图片描述


  • 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(数组名字)返回的是数组所占的字节数;
    • 这里写图片描述
    • -
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值