我正在学习C,我正在努力做到以下几点:
table
从函数创建结构pointer
新创建的table
table的typedef: typedef char table [8][8];
所以,我创建了这个函数:
table* create_table() {
table o;
return &o;
}
Run Code Online (Sandbox Code Playgroud)
但我从编译器得到一个错误,说我正在返回一个局部变量的地址.
如何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;
}
Run Code Online (Sandbox Code Playgroud)