首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

(char*)&a的意思,该如何解决

2012-05-02 
(char*)&a的意思源程序:#includestdio.htypedefstruct{doubledcharc}CStypedefstruct{charc1doubled

(char*)&a的意思
源程序:

#include<stdio.h>
typedefstruct{
doubled;
charc;
}CS;
typedefstruct{
charc1;
doubled;
charc2;
}CS1;
int
main()
{
CSa;
CS1b;
printf("sizeof(CS)=%d\n",sizeof(CS));
printf("offset(a.d)=%d,offset(a.c)=%d\n",
(char*)&a.d-(char*)&a,(char*)&a.c-(char*)&a);
printf("sizeof(CS1)=%d\n",sizeof(CS1));
printf("offset(b.c1)=%d,offset(b.d)=%d,offset(b.c2)=%d\n",
(char*)&b.c1-(char*)&b,(char*)&b.d-(char*)&b,
(char*)&b.c2-(char*)&b);
return0;
}


[解决办法]
转换成char*类型的指针,这样用于计算地址的offset。以字节为单位。
[解决办法]
(char*)&a的意思

&a,取得变量a的地址,转换为char*类型,就是得到a的首地址,这样做的目的是与 其他做地址操作。
比如:(char*)&a.d-(char*)&a,假设d double为8字节
&a.d返回的为a.d 的地址,类型为 double*
&a取得为a的地址,类型为CS* 
c++是强类型语言,double* 和 CS*没有默认的转换规则。因此不能运算,在都转为char*类型后,就可以了。

热点排行
Bad Request.