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

时间:2015-05-19 23:10:02

标签: c pointers integer

在以下代码段中:

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

注意:lenintbuffer是指向char的指针。

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

2 个答案:

答案 0 :(得分:3)

此代码非法。指针可能无法与整数(常量0除外)进行比较。编译器应该生成错误消息。

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

您可以向此页面的作者报告此错误;虽然如果基本的编译错误通过他们的质量保证流程,我讨厌考虑还会出现其他错误。

答案 1 :(得分:0)

它被称为指针算术,它与

基本相同
if (&buffer[strlen(buffer)] >= len - 1)

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

为什么他们将它与len - 1进行比较是一种谜,除非len被初始值覆盖,或者程序员确切地知道"text"的地址是什么,这取决于在编译器AFAIK上。