WIN32汇编语言中定义字符串末尾为什么要这样加零?
发布网友
发布时间:2022-04-20 15:06
我来回答
共5个回答
热心网友
时间:2023-07-09 07:34
C语言中标准字符串的结尾
对C语言或者汇编语言的字符串来说,只用一个基本数据类型去表示一个字符串,这会存在一个问题,那就是无法保存这个字符串的长度,换句话说我们不知道一个字符串是在哪里结束的。
所以C语言就规定以 0(或者'\0' 本质上就是数字0)来表示一个字符串的结尾,这样就可以用一个基本数据类型去表示一个字符串了,字符串处理函数 strcat这些都是以这个0做为字符串结尾判定标致的,当然这个规则也被用在了汇编中(因为现在的汇编都要尽量与上层兼容,早期DOS时代的结束符是美元号$)。现在一般把这种字符串叫做ANSI字符串!
在高级编程语言比如C# C++中 有专门处理字符串的数据类型,实际上都有一个字段是用来保存长度或者结束位置的。
纯自己手打
热心网友
时间:2023-07-09 07:34
这里这个0代表就是结束或“空”的意思,相当于NULL,也就是数值0x00.
热心网友
时间:2023-07-09 07:35
hello是单词。最后会加0,这个0是字符串结束字符,以后处理的时候有用。
热心网友
时间:2023-07-09 07:35
用 C 语言定义字符串时,编译软件会自动在字符串的末尾,加上一个零。
作为字符串结束的标记。
用汇编的 DB 伪指令定义字符串,编译软件就没有自动加上零的功能。
如果编程者想要加上零,就必须在程序中,自己加上零。
这就是《汇编语言db 'hello',0中0的意思》。
热心网友
时间:2023-07-09 07:36
就是普通数据: 0
没有什么忒别含义
db 'hello',0
经过汇编编译后,生成数据:
68 65 6C 6C 6F 00
h e l l o 0
最后两个0就是代码db 'hello',0中0的编译结果