gpt4 book ai didi

c - 在 C 中使用带有取消引用的增量运算符

转载 作者:太空宇宙 更新时间:2023-11-04 06:23:13 25 4
gpt4 key购买 nike

对于我的函数,我得到一个空指针,考虑到传入指针是 char 类型,我想指向下一个位置。

int doSomething( void * somePtr )
{
((char*)somePtr)++; // Gives Compilation error
}

我得到以下编译错误:

Error[Pe137]: expression must be a modifiable lvalue

这是运营商优先级的问题吗?

最佳答案

转换不产生左值(参见 C11 标准第 6.5.4 节脚注 104),因此您不能将后增量 ++ 运算符应用于其结果。

c-faq: 4.5 :

In C, a cast operator does not mean "pretend these bits have a different type, and treat them accordingly"; it is a conversion operator, and by definition it yields an rvalue, which cannot be assigned to, or incremented with ++. (It is either an accident or a deliberate but nonstandard extension if a particular compiler accepts expressions such as the above.)

试试这个

char *charPtr = ((char*)somePtr);
charPtr++;

关于c - 在 C 中使用带有取消引用的增量运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30620670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com