Ric*_*dle 16
以HiASCII格式取字符串.它在内存中最简单的表示是两个字节:
0x48
0x69
Run Code Online (Sandbox Code Playgroud)
但那段记忆在哪里结束?除非你还准备传递字符串中的字节数,否则你不知道 - 内存块本身没有长度.
所以C有一个标准,字符串以零字节结束,也称为NUL字符:
0x48
0x69
0x00
Run Code Online (Sandbox Code Playgroud)
字符串现在明确地两个字符长,因为前面有两个字符NUL.
Ric*_*ett 14
它是一个保留值,用于指示字符串中(例如)字符序列的结尾.
更正确地称为null(或NUL)终止.这是因为使用的值为零,而不是'0'的字符代码.为了澄清区别,请查看ASCII字符集的表格.
这是必要的,因为像C这样的语言具有char数据类型,但没有string数据类型.因此,由devleoper决定如何在其应用程序中管理字符串.通常的做法是使用一个char带有空值的s 数组来终止(即表示结束)字符串.
请注意,字符串的长度与最初声明的char数组的长度之间存在区别.
char name[50];
Run Code Online (Sandbox Code Playgroud)
这声明了一个包含50个字符的数组.但是,这些值将是未初始化的.因此,如果我想存储字符串"Hello"(长度为5个字符),我真的不想打扰将剩余的45个字符设置为空格(或其他一些值).相反,我在我的字符串中的最后一个字符后存储NUL值.
更新的语言,如Pascal,Java和C#都string定义了特定的类型.它们具有标题值以指示字符串中的字符数.这有几个好处; 首先,您不需要走到字符串的末尾来查找其长度,其次您的字符串可以包含空字符.
维基百科在字符串(计算机科学)条目中提供了更多信息.
| 归档时间: |
|
| 查看次数: |
1507 次 |
| 最近记录: |