在C中添加指向整数的指针

adding pointer to integer in C

在下面的代码段中:

if (buffer  + strlen(buffer) >= len -1) beep();

注意:len 是一个 intbuffer 是指向 char 的指针。

我不明白有人如何将缓冲区(指针)添加到字符串的 strlen() 并将其与 len 进行比较。谁能帮帮我吗。 注意:实际代码 link 是 http://www.finseth.com/craft/#intro.1.4 任何帮助将不胜感激。

这叫指针运算,本质上和

是一样的
if (&buffer[strlen(buffer)] >= len - 1)

这是两个版本中非常难看的代码行。

为什么要和len - 1比较是个谜,除非len被初始值覆盖,或者程序员确切地知道"text"的地址是什么,将取决于编译器 AFAIK。

此代码不合法​​。不能将指针与整数进行比较(常量 0 除外)。编译器应该会生成一条错误消息。

某些编译器可能会在默认配置中生成 "only" 警告,并在运行时执行无意义的比较,但您应将此视为错误。

您可以将此错误报告给本页的作者;虽然如果基本的编译错误通过他们的 QA 过程,我不愿意去想其他可能存在的错误。