typedef struct
{
uint8_t data0;
uint8_t data1;
uint8_t data2[3];
uint8_t data3;
} DATA_TYPE ;
DATA_TYPE aaa , *bb;
uint8_t *ptr ;
ptr = &aaa.data2[2];
bb = &aaa;
sprintf(asc,"%u",(uint16_t)(&aaa.data2[2] - &aaa.data0 + 1));//結果等于3
sprintf(tempp,"%u",(uint16_t)(&bb->data2[2] - &aaa.data0 + 1));//結果等于5
sprintf(str,"%u",(uint16_t)(ptr - &aaa.data0 + 1));//結果等于5
結果等于5是對的,第一種和第三種方法有什么區別嗎?
|