簡體   English   中英

直接將結構成員的值賦給變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM