结构体中的数组中的元素

问题:

我定义了这么个结构体:

// 结构体定义区
struct _MODBUS
{
	u8 SlaveAddr;//从机地址
	
	u8 TxLength;
	u8 TxIndicator;//发射指示器,指向要发送那一位
	u8 TxBuff[0xff];//Slave Address , Function , Coil Address , Force Data , Error Check Hi , Error Check Lo

	u8 RxAddrAck;   //地址确认,表示是信息发给本机的
	u8 RxLength;    //接收数据长度,
	u8 RxFlag;      //接收到信号标志,表示USART3开始接收数据了
	u8 RxTimer;     //接收计时器,如果RxFlag==1并且RxTimer>10,就说明这帧数据接收结束了
        u8 RxIndicator; //接收数据指针,当前值表示通过异步通信接收到的数据的个数
	u8 RxBuff[0xff];
	u8 RxFinish;    //接收结束标志
	
	u8 REGISTER[0xff];//MODBUS寄存器
	
};


struct _MODBUS MODBUS={.SlaveAddr=0x01};

现在的需要是单独修改 REGISTER中的5、6、7,于是先定义指针变量

//注意区别于const Uint8 *p;Uint8 * const p;
Uint8 * pDELAY_R5=&MODBUS.REGISTER[5];//继电器5的单位100ms
Uint8 * pDELAY_R6=&(MODBUS.REGISTER[6]);//单位100ms
Uint8 * pDELAY_POWER=(MODBUS.REGISTER);//单位1s

然后对其进行修改 

    *pDELAY_R5=10;//单位100ms
    *pDELAY_R6=30;//单位100ms
    pDELAY_POWER[7]=60;//单位1s,这里就是一分钟

但是执行的结果不对啊,为什么“Uint8 * pDELAY_R5=&MODBUS.REGISTER[5];”这么定义的值没改变?这是怎么回事啊!!!

运行结果

 

解决方法:

其实,REGISTER中5、6的值是改变了的。问题在于显示的是char型的,而10、30对应的ASCII码,不是显示字符

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值