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

在C中添加指向整数的指针,c,pointers,integer,C,Pointers,Integer,在以下代码段中: if (buffer + strlen(buffer) >= len -1) beep(); 注意:len是一个int,buffer是指向char的指针 我不明白有人如何将缓冲区(指针)添加到字符串的strlen(),并将其与len进行比较。谁能帮帮我吗。 注意:实际的代码链接是 任何帮助都将不胜感激。它被称为指针算法,本质上与 if (&buffer[strlen(buffer)] >= len - 1) 这两个版本的代码都非常难看 为什么他们要将它

在以下代码段中:

if (buffer  + strlen(buffer) >= len -1) beep();
注意:
len
是一个
int
buffer
是指向
char
的指针

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

它被称为指针算法,本质上与

if (&buffer[strlen(buffer)] >= len - 1)
这两个版本的代码都非常难看


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

它被称为指针算法,本质上与

if (&buffer[strlen(buffer)] >= len - 1)
这两个版本的代码都非常难看


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

它被称为指针算法,本质上与

if (&buffer[strlen(buffer)] >= len - 1)
这两个版本的代码都非常难看


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

它被称为指针算法,本质上与

if (&buffer[strlen(buffer)] >= len - 1)
这两个版本的代码都非常难看


为什么他们把它与
len-1进行比较是个谜,除非
len
从初始值被覆盖,或者程序员确切地知道
“text”
的地址是什么,这取决于编译器是否正确。

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

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


您可以将此错误报告给此页面的作者;虽然如果基本的编译错误通过了他们的QA过程,我不愿意去想还有什么其他的错误可能会出现。

这段代码是非法的。指针不能与整数进行比较(常数
0
除外)。编译器应该已生成错误消息

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


您可以将此错误报告给此页面的作者;虽然如果基本的编译错误通过了他们的QA过程,我不愿意去想还有什么其他的错误可能会出现。

这段代码是非法的。指针不能与整数进行比较(常数
0
除外)。编译器应该已生成错误消息

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


您可以将此错误报告给此页面的作者;虽然如果基本的编译错误通过了他们的QA过程,我不愿意去想还有什么其他的错误可能会出现。

这段代码是非法的。指针不能与整数进行比较(常数
0
除外)。编译器应该已生成错误消息

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



您可以将此错误报告给此页面的作者;虽然如果基本的编译错误通过了QA过程,我不愿意去想还有什么其他的错误可能会出现。

请看一下实际的代码好吗?它来自一本名为《文本编辑手艺》的书,代码的链接是:除了丑陋之外,它也是一个bug
buffer+strlen(buffer)
是一个指针,但它与整数
len-1
进行比较,这不太可能产生任何有意义的结果。请查看实际代码好吗?它来自一本名为《文本编辑手艺》的书,代码的链接是:除了丑陋之外,它也是一个bug
buffer+strlen(buffer)
是一个指针,但它与整数
len-1
进行比较,这不太可能产生任何有意义的结果。请查看实际代码好吗?它来自一本名为《文本编辑手艺》的书,代码的链接是:除了丑陋之外,它也是一个bug
buffer+strlen(buffer)
是一个指针,但它与整数
len-1
进行比较,这不太可能产生任何有意义的结果。请查看实际代码好吗?它来自一本名为《文本编辑手艺》的书,代码的链接是:除了丑陋之外,它也是一个bug
buffer+strlen(buffer)
是一个指针,但它与整数
len-1
进行比较,这不太可能产生任何有意义的结果。“if”语句中的代码行为非ENCE。建议:''if(strlen(buffer)>(len-1))beep();'但是,当此条件为“true”时,缓冲区将超过“text”文本的结尾,导致未定义的行为,并可能/将导致seg故障事件注意,“if”语句在很大程度上取决于C运算符的主持。如果再合并一组或两个paren,人类会更清楚。@user3629249算术运算符的优先级高于关系运算符是众所周知的,我怀疑是否有人看到了这一点,并认为它可能是
buffer+(strlen(buffer)>=len)-1