我试图通过使用函数来通过结构传递PORTs地址,我不知道如何纠正使用指针的工作。这是我的结构和功能的代码:
typedef struct {
read:1;
last_read:1;
changed:1;
unsigned short *port; //Here the declaration of the pointer that will receive the address
pin:1;
active_state:1;
} Input;
void Setup_input(Input s,char *port, char pin, char active_state){
s.port = &port; //HERE I TRY TO PASS THE ADDRESS OF THE PORT TO THE POINTER OBJECT
s.pin = pin;
s.active_state = active_state;
事实证明,我没有正确地做到这一点,我无法正确阅读或控制PORT。我正在使用Mikroelectronic PRO编译器。感谢
答案 0 :(得分:0)
这行代码
s.port = &port;
将参数的地址存储到成员port
中。当您取消引用结构中的指针时,您将在调用port
时访问参数Setup_input()
所在的堆栈内存。这会导致未定义的行为。
你显然想要的是分配参数的值:
s.port = port;