C 语言字符串

C 语言为了解决一个字符串的长度信息问题,使用特定标记符号(空字符即 ‘\0’,其 ASICC 码值为 0)作为一串字符的结束标记。

内存里面 hello 的存放如下:
‘h’,’e’,’l’,’l’,’o’,’\0′

C 语言将字符存于数组,数组是一种分配内存的方式。
例:
char str[6]={‘h’,’e’,’l’,’l’,’o’,’\0′}
char str[6]={‘h’,’e’,’l’,’l’,’o’, 0}
char str[]={‘h’,’e’,’l’,’l’,’o’,’\0′}
char str[20]={‘h’,’e’,’l’,’l’,’o’,’\0′}
如果没有 ‘\0’ 则会一直向后输出随机的内存数据,直到遇到一个随机出现的 ‘\0’。

一个字符串只要遇到 ‘\0’或者 0 就会结束,不管后面还有没有内容
如:
char he[16]={‘h’,’e’,’l’,’l’,’o’,’\0′,’w’,’t’,’f’};
只会输出 hello

只需要一个字符串的起始地址,就能够获得一个字符串的对象。
如:
char* ptr = he+3;
printf(“%s”,ptr);
会输出 lo

常数、常量字符串
1、常数、常量字符串内存是分配在代码段上(不管是定义在全局还是局部),会编译到可执行文件,然后随着代码加载到内存里面。
用二进制编辑器打开 exe 文件直接可以看到常量、字符串常量的二进制表示。
2、代码段是只读的,不允许修改,因此
char* ptr = “hello”;
ptr[0] = ‘t’;
是错误的。
2、定义常量字符串的语法:”字符内容”,它的存储方式也是字符加结尾符号。
3、如果定义两个一样的常量字符串,编译器会使用同一个内存地址

字符串库函数
1、strlen:计算字符串的长度
int strlen(char* str)
传入当前字符串存放的内存地址,返回这个字符串的长度,不算 ‘\0’ 的长度。

2、strcmp(char* lhs, char* rhs)
比较两个字符串是否一样,如果一样则返回 0,
返回 负,则 lhs 比 rhs 小,;
否则 lhs 比 rhs大。

3、strcpy(char* dst, char* src)
字符串拷贝,将从 src 内存开始,存放的字符串拷贝到 dst 内存里面。
src 必须要是一个合法的字符串
dst 这块内存必须要合法并有足够的空间来存储字符串
4、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值