免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1728 | 回复: 3
打印 上一主题 下一主题

是不是不可以把指针赋值给其他变量 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-05 15:47 |只看该作者 |倒序浏览
比如下面的代码就产生了错误


  1. void main()
  2. {
  3.          int i=423;
  4.          int *iptr=& i;        

  5. //error may occur here
  6.         i=iptr;
  7. }

复制代码


编译后的输出结果是

  1. d:\souce codez\test\test.cpp(5) : error C2440: '=' : cannot convert from 'int *' to 'int'

复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-03-05 15:53 |只看该作者

是不是不可以把指针赋值给其他变量

[$i]是什么意思?
你可以赋值,不过要使用强制类型转换。
你还要清楚你正做做什么。

论坛徽章:
0
3 [报告]
发表于 2004-03-05 20:02 |只看该作者

是不是不可以把指针赋值给其他变量


  1. void main()
  2. {
  3.          int i=423;
  4.          int *iptr=& i;        
  5. }
复制代码

这些代码都是对的
只是 i=iptr;这句话有问题
这是什么意思???
想完成什么功能?
何况 i是 int类型
iptr是 int *类型,能赋值嘛?

论坛徽章:
0
4 [报告]
发表于 2004-03-05 20:39 |只看该作者

是不是不可以把指针赋值给其他变量

可以实现。用类型强制转换。

  1. void main()
  2. {
  3.          int i=423;
  4.          int *iptr=& i;      

  5. // 将i=iptr;这一句做如下修改。
  6.         i = (int) iptr;
  7. }
复制代码


不过这么做一般没有什么实用价值。因为变量 iptr 一经分配产生,它在内存中的位置(地址,即变量 iptr 的值)就是固定的,不能人为改变。只要是在变量 iptr 的生存期,这个地址值随时可以通过 iptr 得到。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP