换个姿势学C语言
0. 说明
《换个姿势学C语言》由何旭辉 著,清华大学出版社2022年出版。感谢何老师!
这是一本非常不错的书!
- 第一、二、三章总结参考换个姿势学C语言 第1-3章
- 第四章总结参考换个姿势学C语言 第4章
- 第五章5.1节总结参考换个姿势学C语言 第5章 5.1节
- 第五章5.2节总结参考换个姿势学C语言 第5章 5.2节
- 第五章5.3节总结参考换个姿势学C语言 第5章 5.3节
5. 获取完整的牌价数据
5.3 字符和字符串
在5.1.2节中,我们已经可以使用一个双精度浮点型数组存储现汇买入价、现钞买入价、现汇卖出价、现钞卖出价和中行折算价。
对于文字,很多语言提供了“字符串”这种数据类型。
字符串可用于存储多个连续的字符。
你在在阅读的教程文本、人名、要显示的货币名称等都是字符串。
字符串中的字符可以是汉字、字母、数字、符号或者其他国家的文字符号。
C语言并没有提供“字符串”这种数据类型。
deepseek的回答:
在C语言中,没有直接提供“字符串”数据类型,而是通过字符数组和字符指针来处理字符串。这种设计有以下几个原因:
历史原因 C语言诞生于20世纪70年代,设计初衷是用于系统编程,强调简洁和高效。当时的内存和处理能力有限,因此C语言选择了一种轻量级的方式处理字符串,即使用字符数组和指针。
灵活性 C语言的设计理念是提供底层控制,允许程序员直接操作内存。通过字符数组和指针,程序员可以灵活地管理字符串的内存分配、复制、拼接等操作,而不依赖于高级语言中的“黑箱”实现。
与硬件的紧密联系 C语言的设计目标是贴近硬件,字符数组和指针可以很好地映射到内存的连续地址空间。这种设计使得C语言在处理字符串时非常高效,适合系统编程和嵌入式开发。
简单性 C语言的核心语法非常简洁,没有引入复杂的字符串类型。通过字符数组和指针,C语言可以用最小的语法开销实现字符串操作。
以
\0
结尾的约定 C语言中的字符串以\0
(空字符)作为结束标志,这种设计简单且高效。虽然需要程序员手动管理字符串的长度和内存,但也避免了额外的存储开销。标准库支持 虽然C语言本身没有字符串类型,但标准库(如
<string.h>
)提供了丰富的字符串操作函数(如strcpy
、strlen
、strcat
等),弥补了语言本身的不足。总结 C语言不提供字符串类型是为了保持语言的简洁性、灵活性和高效性。通过字符数组和指针,程序员可以完全控制字符串的内存和操作,虽然这增加了编程的复杂性,但也使得C语言在系统编程和底层开发中表现出色。
我们先来了解C语言中是如何处理字符和字符串的。
5.3.1 计算机中的字符
- 严格意义上说,无论是中文使用的汉字还是英文中的字母都是一种图形,而计算机只能处理数值,准确地说是只能处理二进制数值。所有信息都必须转换成二进制的数值后才能被计算机处理。
例如字符“F”,要在屏幕上显示它就必须将这个字母的外观用二进制数值进行描述。方法之一就是把字符的外形划分成若干个栅格,然后分别用1和0来描述每个栅格的内容。
如下图所示就是字符F的点阵描述:
可以看到,描述字母F的外观需要32个二进制位,也就是4个字节。但是文字是会重得使用的,如果每存储一个英文字符都要使用4个字节,在计算机技术发展的初期是不可接受的。
因此,在计算机系统中只停留一份用于显示的字符点阵信息(被称为字库或字模),然后给每个字符一个唯一的编号,在传输、存储字符时只使用字符的编号。换句话说,在存储大写字母F时不是存储它的点阵信息,而是存储一个数字编号来代表它(只须1个字节即可),这个编号被称为“字符编码”,到了要显示F的时候再根据这个编码从字库中调出它的点阵信息用于显示。
用数字代表文字不是计算机领域的发明,电报也是将文字转换成数字发出,接收方再根据双方一致的“密码本”将其翻译成文字。
- 计算机中的字符编码必须采用公开。通用的编码标准。这样才能在不同类型的计算机之间交换信息。