【发布时间】:2016-09-19 10:09:52
【问题描述】:
我正在用 C 编程。
我有一个结构:
struct MY_TYPE {
boolean flag;
short int value;
double stuff;
};
我有一个函数,它将指向MY_TYPE 的指针作为参数:
getData(struct MY_TYPE ** m_type) {
// I initialise an object of MY_TYPE
struct MY_TYPE a = {.value = 123};
// I assign the address of above object to a pointer of MY_TYPE
struct MY_TYPE *p = &a;
// I assign the address of above pointer to parameter
m_type = &p;
}
在我的主程序中,我调用了上面的函数:
struct MY_TYPE *my_param;
getData(&my_param);
// I set a break pointer here, and it shows me my_param is NULL, why?
我调用getData(...)后,传入的参数是NULL,为什么?
【问题讨论】:
-
你知道一些关于本地作用域的变量.....
-
无论如何,变量 'a' 是 getData() 函数的本地变量,因此您不能返回它(或指向它的指针,或者更糟糕的是指向也是局部变量的指针的指针)。
标签: c function struct parameter-passing pass-by-reference