gpt4 book ai didi

string - 程序如何确定字符串的结尾?

转载 作者:行者123 更新时间:2023-12-04 08:43:04 24 4
gpt4 key购买 nike

我可以像这样定义一个新变量 msg db 'Hello, world!$' ,或其他方式 msg2 db 'Hello, world!', 0我知道字符串的结尾是使用值 0 确定的在内存中。什么是符号$站在那?

最佳答案

How does a program determine the end of a string?


这取决于程序。一个好的程序会做这样的事情(NASM 语法):
string:    db "Hello World!"
.end:

mov ecx,string.end - string ; ecx = length of the string
..并且会在任何修改(追加、截断、连接等)期间跟踪字符串长度/秒,以便它始终知道字符串的长度,几乎没有任何开销。
“不太好”的程序可能会将字符串的长度放在字符串的开头。这是由一些旧的编程语言(例如 Pascal)完成的。当您想处理重叠的字符串时,这会导致问题(例如,如果 string2string1 的后半部分,那么您无法通过使字符串在内存中重叠来节省内存,因为您必须在 string2 的开头会破坏 string1 的中间部分)。
“不太好”的程序也可能会浪费 CPU 时间来搜索字符串以寻找某种终止符(它的糟糕程度取决于字符串的长度 - 对于极长的字符串来说非常糟糕)。对于 MS-DOS,终止符是 '$'字符(如果你想在字符串中间有一个 '$' 字符,这会变得更加愚蠢/烦人),而对于大多数其他情况(例如 C 编程),它是一个零(空字符)。
当然对于汇编语言你基本上可以为所欲为(并且可以编写一个好的程序);直到您必须使用其他人编写的代码(例如 MS-DOS API,或用其他语言编写的代码)。

关于string - 程序如何确定字符串的结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64468457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com