struct structA
{
int a;//占内存大小4字节
int b;//占内存大小4字节
int c;//占内存大小4字节
float d;//占内存大小4字节
uint32_t e;//占内存大小4字节
} test,*testPtr
看到你提的这个问题,可能你对结构体不熟悉,或者说你对指针还不熟悉;
int *p;
p + 1 是多少?是p 往后的4个字节,按照 p 的类型移动的。
struct structA *p;
p +1 是多少?
移动到下一个结构体内存,如果你这个结构体是12个字节,那么p +1 是跳到 12 字节以后
那 怎么指定结构体中的成员?C语言提供了一种方式,-> 和 . 这两个运算符,明白了否?
定义完结构体,这只是一个定义,你需要实例化它,比如test test_1;一般访问e字段的话直接用test_1.e表示就行了,用指针的话首地址加上e字段的地址偏移,就像你说的那样就行,但是没这个必要
如果是通过指针加减的话,你可以了解一下,结构体内存对齐,或许对你有帮助,操作符的话&(aPtr->e)
你是说e的首地址么,可以是&(aPtr->e),也可以是aPtr + 16