结构体参数传入的问题,感谢大神看看问题在哪里?

2019-12-13 18:24发布

完整代码如下:

#include "stdafx.h"

typedef unsigned short     int uint16_t;
uint16_t GPIO_Pin_1=1;
uint16_t GPIO_Pin_2=2;

typedef struct GPIO_TypeDef
{
  uint16_t a;      
};

struct GPIO_CHECKSELF
{
        GPIO_TypeDef GPIOx;
        uint16_t GPIO_Pin_x;
};
struct GPIO_CONTROL
{
        GPIO_TypeDef GPIOx;
        uint16_t GPIO_Pin_x;
};

struct DEVICE
{
        GPIO_CHECKSELF GPIO_Checkself;
        GPIO_CONTROL GPIO_Control;
};

void ConfigDevice(DEVICE device,GPIO_TypeDef GPIOx,uint16_t GPIO_Pin_x,GPIO_TypeDef GPIOy,uint16_t GPIO_Pin_y)
{
        device.GPIO_Checkself.GPIOx = GPIOx;
        device.GPIO_Checkself.GPIO_Pin_x = GPIO_Pin_x;

        device.GPIO_Control.GPIOx = GPIOy;
        device.GPIO_Control.GPIO_Pin_x = GPIO_Pin_y;
}


int _tmain(int argc, _TCHAR* argv[])
{
        DEVICE KeTingLight;
        GPIO_TypeDef GPIOC;
        GPIOC.a =1;
        ConfigDevice(KeTingLight,GPIOC,GPIO_Pin_2,GPIOC,GPIO_Pin_1);
        printf("%d,%d,%d,%d: ",KeTingLight.GPIO_Checkself.GPIOx,KeTingLight.GPIO_Checkself.GPIO_Pin_x,KeTingLight.GPIO_Control.GPIOx,KeTingLight.GPIO_Control.GPIO_Pin_x);
        printf("完成: ");
        return 0;
}

输出结果应该是 1 2 1 1
结果输出的是 52428 52428 52428 52428


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
墨非
1楼-- · 2019-12-13 19:55
函数参数更改要带出来,该用指针啊。。。
love_ourdev
2楼-- · 2019-12-14 00:53
C语言没学过吗?传值跟传址都没搞懂!
g921002
3楼-- · 2019-12-14 06:15
 精彩回答 2  元偷偷看……
takashiki
4楼-- · 2019-12-14 06:27
void ConfigDevice(DEVICE device,GPIO_TypeDef GPIOx,uint16_t GPIO_Pin_x,GPIO_TypeDef GPIOy,uint16_t GPIO_Pin_y)
{
改为
void ConfigDevice(DEVICE &device,GPIO_TypeDef GPIOx,uint16_t GPIO_Pin_x,GPIO_TypeDef GPIOy,uint16_t GPIO_Pin_y)
{

如果您真的不懂传值、传址和传引用的区别的话,建议不要轻易用C++,比C的坑更多。
l4568527193
5楼-- · 2019-12-14 11:55
love_ourdev 发表于 2019-2-26 19:01
C语言没学过吗?传值跟传址都没搞懂!

几年没碰了,最近家里要装修,所以自己搞点东西的,尴尬
l4568527193
6楼-- · 2019-12-14 14:07
takashiki 发表于 2019-2-26 20:09
void ConfigDevice(DEVICE device,GPIO_TypeDef GPIOx,uint16_t GPIO_Pin_x,GPIO_TypeDef GPIOy,uint16_t G ...

感谢,感谢,很多年没用了

一周热门 更多>