指针啊指针,蛋疼的真是让人又恨又爱,不多说了,程序如下
#include <stdio.h> #include <stdlib.h> #include <MEMORY.h> typedef struct test { float fNum; char sz[512]; }TEST_STRUCT; int main(void) { TEST_STRUCT t; float a,b; float *c,*d; a = 1; b = 2; memcpy((char*)&t.sz + sizeof(t.fNum), &a, sizeof(a)); memcpy((char*)&t.sz + sizeof(a) + sizeof(t.fNum), &b, sizeof(b)); c = (float *)(t.sz + sizeof(a) + sizeof(t.fNum)); d = (float *)(t.sz + (sizeof(a))); printf("\t%f\t%f\n\n", *c, *d); printf("\t源地址(char*):%x 源地址:%x\n\n\ 用(char *)转换后地址:%x 转换前地址:%x\n\n\ 地址实验1:%x 地址2:%x\n\n\n", (char*)&t.sz, &t.sz, (char*)&t.sz + sizeof(t.fNum), &t.sz + sizeof(t.fNum), //这个如果不强制转化一下,则以t.sz为度量单位 (char*)&t.sz + sizeof(t.fNum) * sizeof(char), (char*)&t.sz + sizeof(t.fNum) * sizeof(t.sz)); return 0; }