2016-04-10 175 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