今天遇到一个问题,一个很大的结构体需要分两次使用串口将结构体数据发送出去,第一次发送很简单,第二次的起始地址需要跳转到结构体的中间,方法很多,比如第二次从结构体的某个元素开始,name可以取该元素的地址,或者将结构体内容拷贝到一个char数组内,然后使用数组索引定位第二次发送的起始地址,但这两种方法我都不满意,网上查找了一下可以使用指针加强制转换,:
#include
struct Test{
char Item1;
char Item2;
char Item3;
char Item4;
char Item5;
char Item6;
};
int main(){
struct Test TestStr;
char *Ptr;
TestStr.Item1 =1;
TestStr.Item2 =2;
TestStr.Item3 =3;
TestStr.Item4 =4;
TestStr.Item5 =5;
TestStr.Item6 =6;
//强制转换成char指针
Ptr = (char *)&TestStr;
printf("Ptr +0 = %d\r\n" ,*(Ptr +0));
printf("Ptr +1 = %d\r\n" ,*(Ptr +1));
printf("Ptr +2 = %d\r\n" ,*(Ptr +2));
printf("Ptr +3 = %d\r\n" ,*(Ptr +3));
printf("Ptr +4 = %d\r\n" ,*(Ptr +4));
printf("Ptr +5 = %d\r\n" ,*(Ptr +5));
return 0;
}