簡體   English   中英

將指針傳遞給結構作為參數的優勢?

[英]advantage of passing pointer to a struct as argument?

我們的編碼風格是當我們修改結構的內容時,我們將指向結構的指針傳遞給函數。

但是,當我們不修改結構的內容時,是否還有理由更喜歡將指針傳遞給函數?

優點在於傳遞的大小:當您傳遞一個大型struct ,編譯器會生成代碼,以便在按值傳遞該struct時生成該struct的副本。 這會浪費CPU周期,並且可能會在程序耗盡堆棧空間時產生這種情況,尤其是在資源稀缺的硬件上,例如嵌入式微控制器。

當您通過指針傳遞struct ,並且您知道該函數不能對其進行修改時,請聲明指針const以強制執行此規則:

void take_struct(const struct arg_struct *data) {
    data->field = 123; // Triggers an error
}

是的,指針的大小通常比整個結構的大小小得多。 您可以節省堆棧和時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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