[英]Using Increment operator with de-referencing in C
对于我的函数,我得到一个空指针,考虑到传入的指针为char类型,我想指向下一个位置。
int doSomething( void * somePtr )
{
((char*)somePtr)++; // Gives Compilation error
}
我收到以下编译错误:
Error[Pe137]: expression must be a modifiable lvalue
这是运营商优先考虑的问题吗?
强制转换不会产生左值(请参见C11标准的6.5.4脚注104部分) ,因此您不能对其结果应用后递增++
运算符。
在C语言中,强制转换运算符并不意味着“假装这些位具有不同的类型,并相应地对其进行处理”; 它是一个转换运算符,根据定义,它会产生一个右值,该右值不能分配给++或使用++递增 。 (如果特定的编译器接受上述表达式,则可能是偶然的,也可能是有意但非标准的扩展。)
试试这个
char *charPtr = ((char*)somePtr);
charPtr++;
如果要将指针移到下一个,则可以使用:
*ptr++;
如果要更改,请将指针位置复制到另一个变量,然后:
char *abc = (char*)(def + 1);
这真的取决于你做事的动机
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.