文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>关于指针强制类型转换的 补充

关于指针强制类型转换的 补充

时间:2010-08-04  来源:nothing3618

之前转发过一篇文章《判断计算机字节存储顺序的方法》,其中涉及到指针的强制类型转换,如:
int x = 1; char *y = (char *) &x;
我当时理解的是,这个转换过程中发生了数据截断。但事实上,数据保留还是完整的,仅仅是int *寻址是以4个字节为一个单位,但char *寻址则以1个字节为一个单位。

下面是在百度知道上搜到的一问一答,可以帮助理解。

问:
我这里有这样的结构体
struct roadmap_db_section {
   char name[12];
   int  first;
   int  next;
   int  size;
   int  count;
};
然后有这样一条语句: char * c = &ss(其中ss为一个文件内容在内存中的首地址)
struct* s = (struct roadmap_db_section *) c;
我想问的是,这个字符型的指针,怎么就能强制转化为结构体类型的指针呢?转换后这个结构体指针和字符指针之间是什么关系啊?
新手分数不多,希望见量:)

最佳答案

指针说白了就是地址,32位机中地址是用long表示的,所以指针是可以相互转换的,只是转换后寻址方式不同了而已.
上面的roadmap_db_section的在内存中占28字节,转成char*就相当于一个char c[28], 不管它怎么换也就是这28个字节的内容.再转结构体时,前面12个字节放入name[12]中,后面的每四位作一个整数


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载