【发布时间】:2021-08-28 15:31:51
【问题描述】:
我遇到了以下代码,非常新颖有趣。
u8 m_var = stptfunc()->mem;
以前从未见过这种初始化。代码编译并运行良好。 我只是好奇这是否是一种常见的做法。
通常我会这样编码...
strtype *ptrfunc()
{
// statements
}
sttype *stvar = ptrfunc();
u8 var = stvar->mem;
示例代码:
typedef unsigned char u8;
typedef struct{
u8 mem;
}sttype;
sttype *stptfunc(void)
{
static sttype stvar;
stvar.mem = 255;
return &stvar;
}
int main()
{
u8 m_var = stptfunc()->mem;
printf("value of %d",m_var);
return 0;
}
【问题讨论】:
-
之所以有效,是因为
stptfunc正在返回static变量的地址。以我的经验,这不是常见的做法 - 但它可能是。我想这取决于你问谁。 -
@JohnnyMopp 嗨......是的,它工作正常。这是一种常见的做法吗?
-
以前从未见过这样的做法,我个人认为这是非常糟糕的做法:)
标签: c function pointers struct initialization