CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

指针的问题???

楼主Kyori_YR()2005-03-03 19:22:28 在 C/C++ / C语言 提问

#include   <stdio.h>  
  void   main()  
  {  
    int   x=100,y;  
    char   *p;  
    p=(char   *)&x;  
    y=*p;  
    printf("%d\n",y);  
  }  
  运行结果是100  
  我不是太明白(char   *)&x;这句是什么意思。  
  大家能给解释一下吗? 问题点数:0、回复次数:16Top

1 楼Salam2001(Upgrading : C++ and Data Structure ...)回复于 2005-03-03 19:24:15 得分 0

强制指针类型转换,从   int*   类型转换到   char*   类型.Top

2 楼dongpy(51-->ARM)回复于 2005-03-03 19:25:33 得分 0

p=(char   *)&x;  
  //就是把p指向x的最低字节。Top

3 楼UPCC(杂食动物)回复于 2005-03-03 19:45:13 得分 0

p=(char   *)&x;  
  ----------  
  其中&x就是引用x的地址,那么指针就可以指向它,但指针p的类型是char*  
  所以要强加转换,但x>127时结果就开始乱了,因为char与int字节不同!Top

4 楼Student02370236(★★★★★★)回复于 2005-03-03 19:52:09 得分 0

因为x是一个int型数据,所以&x就是代表x的地址,就像是int*   x中的x一样,这里就是把int*   转换成char*类型Top

5 楼liujingfu123(Oh_My_GoD)回复于 2005-03-03 20:02:53 得分 0

rightTop

6 楼CMyMfc(星际人生:=E.F=FlyForEver)回复于 2005-03-03 20:06:12 得分 0

结果跟机器平台相关哈  
  Top

7 楼sankt(宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒.)回复于 2005-03-03 20:08:20 得分 0

学习  
  Top

8 楼cqulzg(love_cpp)回复于 2005-03-03 20:14:06 得分 0

整型和字符型所占的空间不一样,强制转换后只去整型的低位还是高位啊?Top

9 楼lpfwd(寒月清风)回复于 2005-03-03 20:19:56 得分 0

这种强制类型转换,使p指向x的最低一个字节,   在TC编译器下,int占两个字节,char占一个字节,  
  当x>oxFF时,y不会输出x的高字节部分Top

10 楼wytianjiao(大雪无痕)回复于 2005-03-03 20:39:53 得分 0

这个转换是无损的,因为100只在低一个字节里有内容,char占一个字节,不会丢失信息……Top

11 楼EyZ(野兽之瞳)回复于 2005-03-04 03:03:19 得分 0

p=(char   *)&x;  
   
  转换数据类型。把整数INT的地址&x转换为字符char。Top

12 楼yifanwu(逸凡)回复于 2005-03-04 09:03:58 得分 0

强制转换没有改变p只是让*p返回的字宽不同,所以得到的值也不同。Top

13 楼lygui(梦断天台)回复于 2005-03-04 09:57:00 得分 0

我认为,这是一种不好的编码习惯,初学的往往因为运行结果没有问题就理所当然的认为这样没问题。  
  事实上,一般32位操作系统,char是1字节,int是4字节。因为x=100<128,所以才没有出错。  
  Top

14 楼BINARYKNIGHT(B.K.)回复于 2005-03-04 12:32:02 得分 0

p=(char   *)&x;  
   
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  
   
   
  写成这样可以吗?     //     p=&(char   *)x;Top

15 楼Amour81(玛里奥)回复于 2005-03-04 12:33:34 得分 0

不可以,先将X转成CHAR   *就是错误。Top

16 楼Kenmark(fenix)回复于 2005-03-04 12:44:12 得分 0

p=(char   *)&x是对&x(也就是X的地址)进行char   *类型的强制转换,p=&(char   *)x;中要注意运算符号的优先级!  
  Top

相关问题

  • 指针!!!!
  • this指针
  • 指针?
  • 指针
  • 指针
  • 指针!
  • this指针
  • 指针??
  • 指针
  • 指针?

关键词

  • 指针
  • 转换
  • 类型
  • 指向
  • 地址
  • 问题
  • 结果
  • 不同
  • char
  • 就是

得分解答快速导航

  • 帖主:Kyori_YR

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo