- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
它们是以编程语言还是数学家命名的?
帕斯卡字符串的定义特征是什么?在 Wikipedia's article on strings似乎定义特征是将字符串的长度存储在第一个字节中。在另一篇文章中,我的印象是 the memory layout of the strings也很重要。
在细读一个无关的 SO 线程时,有人提到 Pascal strings make Excel fast . Pascal 字符串与空终止字符串相比有哪些优势?或者更一般地说,Pascal 字符串在什么情况下表现出色?
Pascal 字符串是否以任何其他语言实现?
最后,我是将两个单词都大写(“Pascal Strings”)还是只大写第一个(“Pascal strings”)?我是技术文...
最佳答案
Pascal 字符串因一种特定但影响巨大的 Pascal 实现而流行,名为 UCSD。所以 UCSD 字符串 是一个更好的术语。这与使字节码解释器流行的实现相同。
一般来说,它不是一种特定的类型,而是将大小作为字符数据前缀的基本原则。这使得获取长度成为一个恒定时间操作 (O(1)),而不是扫描字符数据中的空字符。
并非所有帕斯卡都使用这个概念。 IIRC,原始(七十年代)约定是用空格填充分配,并向后扫描非空格字符(使字符串不可能有终止空格)。此外,由于软件大多是孤立使用的,因此使用了各种方案,通常基于对该实现/架构有利的内容。
虽然该结构不是 Standard Pascal 的一部分,但最流行的 Borland 方言(Turbo Pascal、Delphi 和 Free Pascal)通常基于 UCSD 方言,因此有 pascal 字符串,Delphi 目前有 5 个这样的字符串。 (短/ansi/宽/unicode/开放)
另一方面,这意味着在循环中,您需要一些基于索引的额外检查来检查字符串的结尾。
所以改为使用复制字符串
while (p^) do begin P^=p2^; inc(p) inc(p2); end;
这完全等同于
while (*s++ = *t++);
在 C 中使用优化编译器时。
while (len>0) do begin p^:=p2^; inc(p) inc(p2); dec(len); end;
甚至
i:=1;
while (i<=len) do begin p[i]:=p2[i]; inc(i); end;
这使得 Pascal 字符串循环中的指令数量略大于等效的零终止字符串,并增加了一个实时值。此外,UCSD 是一种字节码(p-code)解释器语言,后者基于 pascal 字符串使用的代码是“安全的”。
关于string - 什么是帕斯卡字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25068903/
我有一个大问题,因为这段代码在 Dev-Pascal 中正确编译,但在 Lazarus 中却没有。 for k:=1 to n do begin writeln(a[k
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我有一个与 Pascal 中的 for 循环工作方式相关的问题: Program example; var i:integer; Begin i:=7; for i:=1 to i
PROGRAM RandomNumber; Var rand,count,guess : integer; LABEL correct, loop, wrong, end1; begin {Initi
我是新来的,如果我做错了什么,很抱歉! 我正在 Lazarus 中制作一个简单的 Pascal 程序,编译时出现此错误: HWE(16,18) 错误:“Char”和“Constant String”类
这个问题已经有答案了: What is the implementation of sets used in pascal? (2 个回答) 已关闭 6 年前。 我明天要去参加一个高中编程比赛,他们使
我正在用 pascal 编写一个小程序,但遇到了一个小问题。在其他语言中,有一个名为“split”或“explode”的函数,用于获取由定义的字符分隔的长字符串,并将该长字符串拆分为几个较小的字符串,
我在Pascal中找了很长时间这个算法并没有找到,我只在C++中找到了它,这令人沮丧。然后我决定将 C++ 代码翻译为 Pascal,但是有一些问题我无法解决。出现错误消息“浮点溢出”。我需要帮助才能
例如,如果我有这样的数组,如何获取具有特定索引的数组的长度 TYPE T_PERSON = PACKED RECORD Example : STRING[40]; Example2 : STR
我正在尝试使用 创建 TForm 的子类 针对某些情况的特殊构造函数,以及 将保持与当前代码的兼容性的默认构造函数。 这是我现在的代码: interface TfrmEndoscopistSear
我的插入排序算法出现此错误: insertionsort.lpr(19,17) Error: Incompatible types: got "Boolean" expected "LongInt"
我的任务是在我的屏幕上显示两个图像(两个 TImage),一个是头部,另一个是尾部(硬币),并带有一个 TButton 来随机化它们。 就是当你按下按钮时,两个图像会随机选择正面或反面。 我知道这是一
我正在编写一段代码来读取 CSV 文件并从中解析信息(目前我只有代码的开头部分,它将在文件开头的标题中读取。当我尝试编译这段代码,我在行中收到一个错误,它占用了文件中行的长度。 我收到的错误是:[Er
我正在开发一个 Java 应用程序,它是关于将 Mathcad 工作表转换为 Java 应用程序的。谁能知道/建议如何用 Java 代码编写单位(牛顿、帕斯卡、毫米、千克)? 例子:1? double
我是一名优秀的程序员,十分优秀!