字符串的概念

字符串是有序字符的集合

字符串是程序中的基本元素之一

C 语言中没有字符串的概念

C 语言中通过特殊的字符数组模拟字符串

C 语言中的字符串是以 '\0' 结尾的字符数组

字符串与字符数组

在 C 语言中,双引号引用的单个或多个字符是一种特殊的字面量-字符串字面量

存储在程序的全局只读存储区

本质为字符数组,编译器自动在结尾加上 '\0' 字符

下面哪些是字符串的定义

char ca[] = {'H', 'e', 'l', 'l', 'o'}; // 字符数组

char sa[] = {'W', 'o', 'r', 'l', 'd', '\0'}; // 字符串

char ss[] = "Hello word!"; // 字符串,字符串字面量初始化字符出数组

char* str = "Hello word!"; // 字符串

实例分析: 字符数组与字符数组

#include

int main()

{

char ca[] = {'H', 'e', 'l', 'l', 'o'};

char sa[] = {'W', 'o', 'r', 'l', 'd', '\0'};

char ss[] = "Hello word!";

char* str = "Hello word!";

printf("%s\n", ca);

printf("%s\n", sa);

printf("%s\n", ss);

printf("%s\n", str);

return 0;

}

输出:

Hello��Hello word!

World

Hello word!

Hello word!

你知道吗?

字符串字面量的本质是一个数组

字符串字面量可以看作常量指针

字符串字面量中的字符不可改变

字符串字面量至少包含一个字符('\0',空字符串)

字符串字面量

"Hello word!" 是一个"无名的字符数组"

下面的表达式正确吗?

char b = "abc"[0];

char c = *("123" + 1);

char t = *"";

实例分析: 字符串字面量的本质

#include

int main()

{

char b = "abc"[0];

char c = *("123" + 1);

char t = *"";

printf("%c\n", b);

printf("%c\n", c);

printf("%d\n", t);

printf("%s\n", "Hello");

printf("%p\n", "word");

printf("----\n");

printf("\"abc\" = %p\n", "abc");

printf("&\"abc\" = %p\n", &"abc");

printf("\"abc\" + 1 = %p\n", "abc" + 1); // 注意打印输出

printf("&\"abc\" + 1 = %p\n", &"abc" + 1); // 注意打印输出

return 0;

}

输出:

a

2

0

Hello

0x80485b6

----

"abc" = 0x80485cc

&"abc" = 0x80485cc

"abc" + 1 = 0x80485cd

&"abc" + 1 = 0x80485d0

分析:

字符串的本质为字符数组,当定义一个字符串时,返回字符串首元素的地址,而不是字符串地址。

"abc" = 0x80485cc

&"abc" = 0x80485cc

"abc" + 1 = 0x80485cd

&"abc" + 1 = 0x80485d0

0x80485cd - 0x80485cc = 1 byte

0x80485d0 - 0x80485cc = 4 byte (3 + 1('\0'))

字符串的长度

字符串的长度就是字符串所包含的字符个数

字符串长度指的是第一个 '\0' 字符前出现的字符个数

通过 '\0' 结束符来确定字符串的长度

函数 strlen 用于返回字符串的长度

char s[] = "Hello";

printf("%d\n", strlen(s));

printf("%d\n", strlen("123"));

编程实验: strlen 的使用

#include

#include

int main()

{

char s[] = "Hello\0world";

int i = 0;

for(i=0; i

{

printf("%c\n", s[i]);

}

printf("%s\n", s);

printf("%d\n", strlen(s));

printf("%d\n", strlen("123"));

return 0;

}

输出:

H

e

l

l

o

w

o

r

l

d

Hello

5

3

小结

C 语言中通过字符数组模拟字符串

C 语言张的字符串使用 '\0' 作为结束符

字符串字面量的本质为字符数组

字符串相关函数都依赖于结束符 '\0'

以上内容参考狄泰软件学院系列课程,请大家保护原创!

c语言字符串前加l,【C】 30_C语言中的字符串相关推荐

  1. c语言字母意义,C语言 字符串前加L的意义 如:L“A”

    转自:http://c.biancheng.net/cpp/html/1069.html Unicode或者宽字符都没有改变char数据型态在C中的含义.char继续表示1个字节的储存空间,sizeo ...

  2. C语言 字符串前加L的意义 如:L“A”

    转自:http://c.biancheng.net/cpp/html/1069.html Unicode或者宽字符都没有改变char数据型态在C中的含义.char继续表示1个字节的储存空间,sizeo ...

  3. python字符串前加r、f、u、l 的区别

    f-strings 是指以 f 或 F 开头的字符串,其中以 {} 包含的表达式会进行值替换.(目前支持python3.6版本) 下面看下 f-strings 的使用方法 基本使用(作用:替换值) & ...

  4. python 防止转义_python字符串前加r、f、u、l 的区别

    f-strings 是指以f或F 开头的字符串,其中以 {}包含的表达式会进行值替换.(目前支持python3.6版本) 下面看下f-strings的使用方法 基本使用(作用:替换值) 在字符串前加r ...

  5. python字符串前面加f什么意思,浅析python字符串前加r、f、u、l 的区别

    先给大家介绍下Python 字符串前面加u,r,b,f的含义(字符串前缀) 1.字符串前加 u 例:u"我是含有中文字符组成的字符串." 作用: 后面字符串以 Unicode 格式 ...

  6. python 字符串前加r b u f 含义

    python 字符串前加r b u f 含义 文章目录: 一.字符串前加 `r` 二.字符串前加 `b` 三.字符串前加 `u` 四.字符串前加 `f` 五.Python3.x中字符串转换成字节类型 ...

  7. Python字符串前加f、r、b、u的不同用法

    一.字符串前加"f" 1. % 可以使用 % 格式化字符串. c = (250, 250) # 使用 % 格式化 s1 = "坐标为:%s" % c # Typ ...

  8. python 字符串前加‘f‘ ‘r‘ ‘b‘ ‘u‘作用

    python字符串前的修饰 字符串前加 f 字符串前加 r 字符串前加 b 字符串前加 u 字符串前加 f 以 f开头表示在字符串内支持大括号内的python 表达式 print(f'{name} d ...

  9. 数据库工作笔记016---SqlServer2016_日期处理_ntext和text区别_开启远程连接_查看系统COm组件_Browser服务无法启动_导出数据_字符串前加N

    JAVA技术交流QQ群:170933152 sqlserver中的类型: ntext和text一样用来保存大量的文字数据,不过text用单字节保存数据 ,ntext固定用双字节保存数据. ntext保 ...

最新文章

  1. c语言分手代码大全,C语言代码大全
  2. WeihanLi.Npoi 近期更新
  3. Mysql8.0的安装
  4. 接入上文,StarWind V2V Image Converter:虚拟机镜像转换工具,如何使用转化之后的 VMware VMDK 文件
  5. 运行Hadoop自带的wordcount单词统计程序
  6. MAT分析android内存泄漏
  7. DNS劫持DNSmasq详细解析及详细配置
  8. python输出间隔_在python中生成间隔之间的月份列表
  9. C++中void指针
  10. JavaScript函数的参数及传参
  11. 大学计算机vb基础知识6,大学计算机基础vb试题大学计算机基础试题和答案.doc
  12. 搭建测试环境如何配置软件,软件测试环境的搭建(Windows版)
  13. 转载:KOF97简易出招原理解析
  14. 2020N1叉车司机证考试及N1叉车司机考试软件
  15. 漏刻有时数据可视化Echarts组件开发(21):基于echarts开发的自动旋转map3D下钻和柱图地图
  16. Kingdom Rush 国王保卫战图文攻略
  17. PCA与2DPCA及2D-2DPCA零基础理解(下)
  18. 安卓期末作业 学生成绩管理系统(可以注册登录,录入相关信息)
  19. 单片机毕业设计 stm32智能路灯设计与实现
  20. [CVPR‘22 SLPT] Sparse Local Patch Transformer for Robust Face Alignment and Landmarks Inherent Relat

热门文章

  1. GIT 换行符相关操作
  2. Perl 通过SMTP发送正文为HTML格式的邮件
  3. iOS开发之--TableViewCell重用机制避免重复显示问题
  4. android Theme启动APP闪屏处理
  5. .net framework 注册到IIS上
  6. 2021年2月反思与总结
  7. 万物皆为向量:在线向量召回工程服务化实践
  8. 字节终面:CPU 是如何读写内存的?
  9. 大数据中台架构之道: PaaS + DaaS +DA 全域中台架构详解
  10. 必须了解的mysql三大日志-binlog、redo log和undo log