找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6691|回复: 5
打印 上一主题 下一主题
收起左侧

关于keil5中 结构体指针作为函数参数的问题

[复制链接]
跳转到指定楼层
楼主
ID:255045 发表于 2018-10-16 16:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50黑币

.H文件中定义结构体如下
typedef struct {
      float Distance;                                      /*!< 用厘米测量传感器的距离*/
      GPIO_TypeDef* ECHO_GPIOx;             /*!< 指向用于 ECHO port /
      uint16_t ECHO_GPIO_Pin;                    /
!< ECHO Pin /
     GPIO_TypeDef
TRIGGER_GPIOx;        /*!< 指向用于 TRIGGER port /
     uint16_t TRIGGER_GPIO_Pin;               /
!< TRIG Pin */
} TM_HCSR04_t;

函数申明如下:
        uint8_t  HCSR04_Init(  TM_HCSR04_t *HCSR04  ,  GPIO_TypeDef ECHO_GPIOx,               uint16_t ECHO_GPIO_Pin, GPIO_TypeDef* TRIGGER_GPIOx, uint16_t TRIGGER_GPIO_Pin);

        float  HCSR04_Read(TM_HCSR04_t *HCSR04);

主函数如下:
int main(void)
{
       float  result=0;
      TM_HCSR04_t  *HCSR04_1; //定义结构体指针
      HCSR04_Init(HCSR04_1,echo_gpio,echo_pin,trig_gpio,trig_pin);//初始化赋值
     for(;;)
    {
            result=HCSR04_Read( HCSR04_1 ); //读值
           printf( "length is %f",result );
     }
}

编译无错误,就是TM_HCSR04_Init函数中结构体指针作为函数参数无法赋值,如有知晓者,还望不吝赐教,万分感谢



最佳答案

查看完整内容

float result=0; TM_HCSR04_t HCSR04_1; //定义结构体指针 HCSR04_Init(&HCSR04_1,echo_gpio,echo_pin,trig_gpio,trig_pin);//初始化赋值 for(;;) { result=HCSR04_Read( &HCSR04_1 ); //读值 printf( "length is %f",result ); } } 试一下,HCSR04_Init()这个函数内部不能申请空间的话, 传进去的指针没有指向具体的空间
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:406412 发表于 2018-10-16 16:34 | 只看该作者
float  result=0;
      TM_HCSR04_t  HCSR04_1; //定义结构体指针
      HCSR04_Init(&HCSR04_1,echo_gpio,echo_pin,trig_gpio,trig_pin);//初始化赋值
     for(;;)
    {
            result=HCSR04_Read( &HCSR04_1 ); //读值
           printf( "length is %f",result );
     }
}
试一下,HCSR04_Init()这个函数内部不能申请空间的话, 传进去的指针没有指向具体的空间
回复

使用道具 举报

板凳
ID:410667 发表于 2018-10-16 17:46 | 只看该作者
这个肯定赋不了值啊,你具体的 HCSR04_Init赋值函数都没有,只是声明了一个空函数在那
回复

使用道具 举报

地板
ID:255045 发表于 2018-10-16 21:44 | 只看该作者
ashang1988 发表于 2018-10-16 17:22
float  result=0;
      TM_HCSR04_t  HCSR04_1; //定义结构体指针
      HCSR04_Init(&HCSR04_1,echo_g ...

试了一下,会报错
回复

使用道具 举报

5#
ID:255045 发表于 2018-10-16 21:48 | 只看该作者
woai66666660 发表于 2018-10-16 17:46
这个肯定赋不了值啊,你具体的 HCSR04_Init赋值函数都没有,只是声明了一个空函数在那

HCSR04_Init的赋值函数,我以为主函数里 HCSR04_Init(HCSR04_1,echo_gpio,echo_pin,trig_gpio,trig_pin);就已经完成了赋值了,还是有些不明白,想再请教一下
回复

使用道具 举报

6#
ID:255045 发表于 2018-10-21 15:23 | 只看该作者
之前头文件写法写错了,你的答案时正确的,十分感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表