免费注册 查看新帖 |

Chinaunix

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

问个简单程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-09-19 20:54 |只看该作者 |倒序浏览
#include<iostream.h>;
void main(){
int a(7),*pi;
double b(5.6321),*pd;
void *pv;
pi = &amp;
pv = &amp;
cout<<*pi<<endl;
pd = (double *)pv;//此句不明白
cout<<*pd<<endl;
}
注:请高手指教,表嫌问题简单,谢谢!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-09-19 21:08 |只看该作者

问个简单程序

>;>;pd = (double *)pv;//此句不明白

强制类型转换。 将void *型指针 转换成double *型指针.

论坛徽章:
0
3 [报告]
发表于 2005-09-19 21:10 |只看该作者

问个简单程序

void *pv;这里定义了一个void*类型的指针,所谓void*的含义就是指向任何,你的代码应当是这样吧。

  1. pi = &
  2. pv = &
复制代码

在你把b的地址赋给pv后,由于pv是void*类型的指针,也就是说它可以指向任何变量,也就是它的值可以是任何一种类型变量的地址,所以也可以认为它的关于所指向变量的类型信息丢失了。
通过

  1. pd = (double *)pv;
复制代码

这是一种强制类型转换,也就是告诉编译器,pd的值被初始化成pv得值,并且通过pd可以访问已pv的值为起始地址的8个字节的空间,把这八个字节认为是一个double类型的数值。

然后,通过*运算符,引用pd所指向的double存储空间的值。

推荐一本书,《c和指针》

论坛徽章:
0
4 [报告]
发表于 2005-09-19 21:39 |只看该作者

问个简单程序

楼上推荐书了
我就推荐一个站点吧
www.softpub.cn

论坛徽章:
0
5 [报告]
发表于 2005-09-20 00:01 |只看该作者

问个简单程序

首先,谢谢了!
应该是
pi = &amp;
pv = &amp;
没贴好,pv定义为空指针可以指向任何类型的变量啊,为何不能直接输出*pv?pv在系统中怎么识别啊?只能用强制转换么?

论坛徽章:
0
6 [报告]
发表于 2005-09-20 00:02 |只看该作者

问个简单程序

pi = &amp;
pv = &amp;
a,b怎么贴不上呢?奇怪了。

论坛徽章:
0
7 [报告]
发表于 2005-09-21 21:53 |只看该作者

问个简单程序

pi=&
pv=&
这个不行的.必须后面要有个变量
//pi=&amp;
//pv=&amp;

论坛徽章:
0
8 [报告]
发表于 2005-09-21 22:10 |只看该作者

问个简单程序

p=&
q=&
这样不行的哈,后面要有个变量,把它的地址赋给指针
//p=&a
//q=&d
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP