2016-04-10 245 views
2

將結構函數傳遞給函數時,它是否按值傳遞(類似於 值被克隆的常規變量),還是通過 引用(類似於實際的數組變量被傳遞)?你能給個例子嗎。將結構函數傳遞給函數

+0

默認情況下,它是按值傳遞,除非你傳遞一個指針結構。 –

+0

傳遞給函數的結構將始終作爲指向結構的指針到達函數,實際上是指向結構的克隆指針。注意:數組不會傳遞給函數,而是傳遞數組的地址,實際上是數組地址的克隆。 – user3629249

回答

1

你正在通過它的價值。結構中的所有內容都被複制。

+0

你能舉個例子嗎? – bengbeng

+4

@bengbeng寫你自己的例子。你知道如何做一個功能。使用'struct S'作爲參數而不是'int'或其他。 –

+1

Struct以一種方式實現,即分配一塊內存來存儲它的成員。當你將一個結構體作爲參數傳遞時 - 你可以把它想象爲將這塊內存複製到一個函數中。 –

3

在C中一切都是按值傳遞,即使傳遞指針也是按值傳遞。 而且你永遠不能改變實際參數的值。

這是從K &順便說一句。我建議閱讀那本書。爲您節省很多您將來可能會發布的問題。

3

一個結構是按值傳遞:

struct S { 
    int a,b; 
}; 

void f(struct S s) { 
    printf("%d\n", s.a+s.b); 
    s.a = 0; /* change of a in local copy of struct */ 
} 

int main(void) { 
    struct S x = { 12,13}; 
    f(x); 
    printf ("Unchanged a: %d\n",x.a); 
    return 0; 
} 

Online demo