【发布时间】:2010-03-30 21:14:36
【问题描述】:
我很好奇为什么这段代码有效:
typedef struct test_struct {
int id;
} test_struct;
void test_func(test_struct ** my_struct)
{
test_struct my_test_struct;
my_test_struct.id=267;
*my_struct = &my_test_struct;
}
int main ()
{
test_struct * main_struct;
test_func(&main_struct);
printf("%d\n",main_struct->id);
}
这可行,但指向函数局部变量的内存地址是一个很大的禁忌,对吧?
但是如果我使用结构指针和malloc,那将是正确的方法,对吧?
void test_func(test_struct ** my_struct)
{
test_struct *my_test_struct;
my_test_struct = malloc(sizeof(test_struct));
my_test_struct->id=267;
*my_struct = my_test_struct;
}
int main ()
{
test_struct * main_struct;
test_func(&main_struct);
printf("%d\n",main_struct->id);
}
【问题讨论】:
标签: c data-structures function pointers