完整代码如下:
#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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
{
改为
void ConfigDevice(DEVICE &device,GPIO_TypeDef GPIOx,uint16_t GPIO_Pin_x,GPIO_TypeDef GPIOy,uint16_t GPIO_Pin_y)
{
如果您真的不懂传值、传址和传引用的区别的话,建议不要轻易用C++,比C的坑更多。
几年没碰了,最近家里要装修,所以自己搞点东西的,尴尬
感谢,感谢,很多年没用了
一周热门 更多>