在C中添加指向整数的指针
adding pointer to integer in C
在下面的代码段中:
if (buffer + strlen(buffer) >= len -1) beep();
注意:len
是一个 int
,buffer
是指向 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 过程,我不愿意去想其他可能存在的错误。
在下面的代码段中:
if (buffer + strlen(buffer) >= len -1) beep();
注意:len
是一个 int
,buffer
是指向 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 过程,我不愿意去想其他可能存在的错误。