4.3 char *指针指向一些int变量,如何跳过

问题:

我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。

为什么如下的代码((int *)p)++; 不行?

在C语言中,

类型转换意味着“把这些二进制位看作另一种类型,

并作相应的对待”;

这是一个转换操作符,

根据定义它只能生成一个右值(rvalue)。

而右值既不能赋值, 也不能用++ 自增。

(如果编译器支持这样的扩展, 那要么是一个错误, 要么是有意作出的非标准扩展。)

要达到你的目的可以用:

p = (char *)((int *)p + 1);

或者,

因为p 是char * 型,

直接用 p += sizeof(int);

但是,

在可能的情况下,

你还是应该首先选择适当的指针类型,

而不是一味地试图李代桃僵。

永不止步步 发表于01-14 10:00 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363791个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号