我正在学习 C,我正在尝试执行以下操作:
table
从函数创建结构- 回到
pointer
新创建的table
表的typedef:typedef char table [8][8];
所以,我创建了这个函数:
table* create_table() {
table o;
return &o;
}
但是我从编译器那里得到一个错误,说我正在返回一个局部变量的地址。
如何table
从函数创建一个然后返回指针。
您不能返回局部变量的地址,因为地址在函数 ( create_table
) 返回时无效,相反,您应该在堆上创建它:
table* create_table()
{
table * o;
o = malloc(sizeof(table));
// Edit - added initialization if allocation succeeded.
if (o != NULL)
{
memset(o, 0, sizeof(table));
}
return o;
}
您不能返回局部变量的地址。它在函数退出时被释放。您必须使用 malloc 分配它并返回该指针。例如:
table* ptr = malloc(sizeof(table));
memset(ptr, 0, sizeof(table));
return table;