[英]Directly assign value of struct member into variable
我遇到了以下非常新且有趣的代碼。
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;
}
output [1]: https://i.stack.imgur.com/rSUaD.png
stptfunc()->mem
表示stptfunc
是一個 function 返回一個指針,該指針被取消引用以獲取其mem
字段。 由於我們擁有整個程序,我們可以看到這個假設成立。
這可能是不好的做法。 如果stptfunc
返回NULL
怎么辦? 不能保證它不會。
在這樣一個簡單的程序中,這沒什么大不了的,但進入它是一種不好的做法。
此外,根據評論,與使用 malloc/free 相比,function 中的 static 變量可能是一個非常糟糕的做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.