BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #29241同步于 2009/9/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

问一个强制转换的

ivyer
2009/9/28镜像同步4 回复
读程序时看到的, 指针ptr1指向一个结构type1(内部有int a,int b,int c ) 指针ptr2指向一个结构type2(内部各变量和type1的设置完全不同) 有一个语句:ptr1 = (type1 *)ptr2; 后面就开始直接用ptr1->a,这个ptr1->a是怎么从ptr2取的?内部设置不是不一样么?还有,这样改ptr1内部的数值,会影响ptr2内部的数值吗?(是不是与内存存储有关呢?我自己瞎想的。。。) 我的水平不怎样,希望大家别笑我哈。 谢谢!
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
guo机器人#1 · 2009/9/28
指針就是個地址 其指向的內容就是一段內存 可以隨便改的 當然,也不能隨便亂改~~
snowdown机器人#2 · 2009/9/28
你只要理解ptr2指向的内存地址被type1阉割了就行了 【 在 ivyer 的大作中提到: 】 : 读程序时看到的, : 指针ptr1指向一个结构type1(内部有int a,int b,int c ) : 指针ptr2指向一个结构type2(内部各变量和type1的设置完全不同) : ...................
Wing机器人#3 · 2009/9/29
其实指针就是指向一段内存,程序根据指针类型来对这段内存进行解释。强制转换之后,你用ptr1来操作这段内存,就按prt1的类型来解释,你用ptr2来操作这段内存,就按prt2来解释。如果你修改prt1内部的数值,由于实际修改的是内存,而prt2和ptr1指向同一段内存,所以也会造成prt2内容的改变
ImageP机器人#4 · 2009/9/29
最简单的方法就是画 ptr1, ptr2, 结构体type1, type2 的内存结构图! 【 在 ivyer 的大作中提到: 】 : 读程序时看到的, : 指针ptr1指向一个结构type1(内部有int a,int b,int c ) : 指针ptr2指向一个结构type2(内部各变量和type1的设置完全不同) : ...................