在以下代码段中:
if (buffer + strlen(buffer) >= len -1) beep();
注意:len
是int
,buffer
是指向char
的指针。
我不明白有人会如何将缓冲区(指针)添加到字符串的strlen()
并将其与len
进行比较。谁能帮帮我吗。
注意:实际的代码链接是http://www.finseth.com/craft/#intro.1.4
任何帮助将不胜感激。
答案 0 :(得分:3)
此代码非法。指针可能无法与整数(常量0
除外)进行比较。编译器应该生成错误消息。
某些编译器可能会在默认配置中生成“仅”警告,并在运行时执行无意义的比较,但您应将此视为错误。
您可以向此页面的作者报告此错误;虽然如果基本的编译错误通过他们的质量保证流程,我讨厌考虑还会出现其他错误。
答案 1 :(得分:0)
它被称为指针算术,它与
基本相同if (&buffer[strlen(buffer)] >= len - 1)
这两个版本中的代码都非常难看。
为什么他们将它与len - 1
进行比较是一种谜,除非len
被初始值覆盖,或者程序员确切地知道"text"
的地址是什么,这取决于在编译器AFAIK上。