强制类型转换的问题
typedef struct
{
……
}*structp;
test(char *m)
{
structp a;
a = (structp)m;/*请问这里进行类型转换之后的结果请教大侠们!*/
……
}
问题点数:50、回复次数:6Top
1 楼kingfox(小狐仙)回复于 2004-08-01 21:54:46 得分 10
变量a指向了m指向的空间,并且将按照(*structp)的方式访问内存。Top
2 楼peter9606( 荷尔蒙一失效 人就清醒了)回复于 2004-08-01 21:56:53 得分 20
偶来试试:
char *m 表明原来是一个字符串,现在(structp)m 表明这个字符串被强制转换成了一个structp类型的,
其实强制类型转换就是高速编译器 对某个地址开始的内存以新的方式进行解释~Top
3 楼lirivernick(不知所云)回复于 2004-08-01 22:05:55 得分 0
那请问如何访问m[i]这个值Top
4 楼peter9606( 荷尔蒙一失效 人就清醒了)回复于 2004-08-01 22:07:49 得分 10
m已经被强制转换了
你访问这个值有什么意义么?
既然已经是结构体了那就用结构体的方法访问它的成员
你可以继续用m+i的方法访问你想要访问的那块内存 不过不知道这样做有什么意义~Top
5 楼lirivernick(不知所云)回复于 2004-08-01 22:16:22 得分 0
是不是说结构体里的成员和m中的内容对应起来了?Top
6 楼steel007(小宝)(工作在windows和linux平台上)回复于 2004-08-01 22:21:58 得分 10
以m所指向的内存空间已经按照新的方式(struct结构体)来解释,当然应该按照结构体中的成员来访问m指向地址中的东东。Top




