1.结构体变量的地址就是结构体的首地址
2.结构体第一个成员的地址就是结构体的首地址
要获取结构体变量的首地址,就是要获取结构体变量第一个元素的地址。
例如:
typedef struct {
uint16 Kp;
uint16 Ki;
uint16 Kd;
} spidPID; //定义一个结构体类型
spidPID VarPID={1,2,3}; //定义该类型的变量,并初始化
Uint16 Numm2=0,Numm3=0; //定义两个全局变量
Uint16 Fun(uint32 *p) //定义一个函数,用于说明结构体成员引用问题
{
return *p;
}
第一种引用方式,如下,被证明是错的,但是编译并不报警
void main(void)
{
//Numm2 = Fun( (uint32*)(&VarPID.Kp));
Numm3 = Fun( (uint32*)(&VarPID));
}
运行结果如下图,可见并没有取出第一个元素的值

第二种引用方式,如下,被证明是对的
void main(void)
{
Numm2 = Fun( (uint32*)(&VarPID.Kp));
//Numm3 = Fun( (uint32*)(&VarPID));
}
运行结果如下:

获得了第一个元素的值

本文通过一个示例详细解释了结构体变量的首地址和其成员地址的关系,以及如何正确引用结构体的首地址来获取第一个元素的值。在C语言中,结构体的地址即为结构体变量的第一个成员的地址。文章通过两种不同的引用方式,展示了如何正确地使用指针获取结构体成员的值,强调了正确引用结构体首地址的重要性。

564

被折叠的 条评论
为什么被折叠?



