【发布时间】:2015-09-11 04:32:42
【问题描述】:
在这样的函数中:
char nextchr (void* p)
{
((char*)p)++;
return *(((char*)p));
}
这应该返回作为参数传递的字符串文字的第二个字符 p 根本无法做到这一点。
为什么会这样?
解决方案总结:
@MM:
++ 需要一个左值(左手值)才能应用,而类型转换的结果不是这样。
@OP 更新:
一些编译器(通常 /old C89/ /compilers/ 像我的)可能允许 ((char*)source)++; / 只要它不作为参数传递给函数 / 即使它是非法的并且被证明是非法的C 标准。
【问题讨论】:
标签: c pointers void c89 pointer-arithmetic