C语言函数如何传递结构体
时间: 2023-07-15 21:08:40 浏览: 46
在语言中,可以通过值传递或指针递的方式将结构传递给函数。
1. 值传递:将结构体作为函数的参数进行传递。在函数内部,会创建一个结构体的副本,对副本进行操作不会影响原始结构体的值。这种方式适用于结构体较小且不需要修改原始值的情况。
示例代码:
```c
struct Point {
int x;
int y;
};
void printPoint(struct Point p) {
printf("x = %d, y = %d\n", p.x, p.y);
}
int main() {
struct Point p = {1, 2};
printPoint(p);
return 0;
}
```
在上述代码中,`printPoint` 函数以值传递的方式接受一个 `Point` 结构体,并打印其成员变量的值。
2. 指针传递:将结构体的指针作为函数的参数进行传递。在函数内部,可以直接修改原始结构体的值,而无需创建副本。这种方式适用于需要修改原始结构体或结构体较大时使用。
示例代码:
```c
struct Point {
int x;
int y;
};
void modifyPoint(struct Point* p) {
p->x = 10;
p->y = 20;
}
int main() {
struct Point p = {1, 2};
modifyPoint(&p);
printf("x = %d, y = %d\n", p.x, p.y);
return 0;
}
```
在上述代码中,`modifyPoint` 函数以指针传递的方式接受一个指向 `Point` 结构体的指针,并修改其成员变量的值。
无论是值传递还是指针传递,都可以在函数内部对结构体进行操作和修改。选择哪种方式要根据具体的需求来决定。如果结构体较大,或者需要对原始值进行修改,建议使用指针传递,以避免复制大量数据。