当前位置:网站首页>结构体变量的首地址获取注意事项
结构体变量的首地址获取注意事项
2022-08-09 11:16:00 【量子力学和生命科学】
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));
}
运行结果如下:
获得了第一个元素的值
边栏推荐
猜你喜欢
随机推荐
gdb tui的使用
使用.NET简单实现一个Redis的高性能克隆版(四、五)
父类的main方法可以被继承么?有什么特殊?
wpf path xaml写法和c#写法对比
matlab图像分割,从基因芯片荧光图像中提取阴性点(弱)和阳性点(强)
【Subpixel Dense Refinement Network for Skeletonization】CVPR2020论文解读
MySQL的MVVC多版本并发控制机制
[现代控制理论]4_PhasePortrait爱情故事动态系统分析
API接口是什么?API接口常见的安全问题与安全措施有哪些?
【C language】typedef的使用:结构体、基本数据类型、数组
PAT1006
Semaphore SIGCHLD use, how to make the parent that the child performs over, how to make the distinction between multiple child processes. The end
Installation of gdb 10.2
PAT1007
Numpy常用操作博客合集
redis的线程模型
未来装备探索:数字孪生装备
CAN总线发送数据
Redis的常用数据结构和底层实现方式
fork creates multiple child processes