左值的问题

zourongrong 2006-10-25 01:32:25
int int(int offset)
{
struct mem_t * p;
(int)p = offset;
...
...
}

为什么在另外一个工程中报错误而一个工程中编译通过.
编译错误是 p 不是左值
windwos2000 + vc60
...全文
280 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zourongrong 2006-10-25
  • 打赏
  • 举报
回复
看来换个问题的方式:
什么时候 (int)p可以作为左值,编译不报错
vc60环境。编译环境设置有关吗?
iamliadai 2006-10-25
  • 打赏
  • 举报
回复
p是左值 但是(int)p不是左值
Kusk 2006-10-25
  • 打赏
  • 举报
回复
赋值的时候类型转换最好不要转左值,因为左值是引用语义,转了之后可能就是值语义了。转右值使
它与左值兼容就好。
zourongrong 2006-10-25
  • 打赏
  • 举报
回复
p = (struct mem_t *)offset;
行的。
Kusk 2006-10-25
  • 打赏
  • 举报
回复
回复人:zourongrong(山长水阔知何处) ( 一级(初级)) 信誉:100 2006-10-25 13:48:00 得分:0
?
(long int )p=offset也不行,这个问题应该和指针的长度没有关系把.
=================================
那p = (struct mem_t *)offset;到底行不行?
zourongrong 2006-10-25
  • 打赏
  • 举报
回复
(long int )p=offset也不行,这个问题应该和指针的长度没有关系把.
飞哥 2006-10-25
  • 打赏
  • 举报
回复
路过
接分
zourongrong 2006-10-25
  • 打赏
  • 举报
回复
就是要把一个整型地址传给它;

而且我在代码里看到

(int)p = offset;
p = (struct mem_t *)offset;

这两种用法都在我们的代码里看到了。商用的代码。
我就是奇怪怎么编译过的
weijiangshanwww 2006-10-25
  • 打赏
  • 举报
回复
(int)p = offset;
=============================
试下
(long int )p=offset
huangyangman 2006-10-25
  • 打赏
  • 举报
回复
又见LZ你啊
正如Kusk(Kusk)所说
说说你为啥要把它抢转为int
Kusk 2006-10-25
  • 打赏
  • 举报
回复
不太确定你的动机。不过如果你是要把一个整型地址传给它,请用:

(int)p = offset;

--->

p = (struct mem_t *)offset;
weijiangshanwww 2006-10-25
  • 打赏
  • 举报
回复
int int(int offset)
{
struct mem_t * p;
(int)p = offset;
...
...
}
=======================
我不知道LZ别的代码是不是错的

但是以INT作为函数名不行吧?
Jokar 2006-10-25
  • 打赏
  • 举报
回复
可能的原因不少,但是你贴的代码太少

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧