c语言结构体作为形参
时间: 2024-08-05 16:00:41 浏览: 77
在C语言中,结构体(struct)是一种用户自定义的数据类型,它可以组合多个不同类型的变量,形成一个整体,方便管理和操作。当我们将结构体作为函数的参数传递时,可以按值或按引用的方式进行。
1. 按值传递:默认情况下,结构体参数是按值传递的,这意味着函数接收到的是结构体的一个副本,对这个副本的修改不会影响原结构体。这种方式效率较高,因为不需要复制大块内存,但函数内部的操作不会改变原始数据。
```c
typedef struct {
int x;
float y;
} Point;
void print_point(const Point p) {
// 在这里修改p的副本,不影响原结构体
p.x = 10;
printf("x: %d, y: %f\n", p.x, p.y);
}
int main() {
Point original;
original.x = 5;
original.y = 2.5;
print_point(original); // 输出不会变
return 0;
}
```
2. 指针传递:为了允许函数修改结构体的成员,我们可以使用结构体指针。通过将结构体地址作为参数传递,函数可以直接访问并修改结构体的原始内容。
```c
void modify_point(Point* p) {
(*p).x = 10; // 通过指针修改原结构体
printf("x: %d, y: %f\n", (*p).x, (*p).y);
}
int main() {
Point original;
original.x = 5;
original.y = 2.5;
modify_point(&original); // 输出:x: 10, y: 2.5
return 0;
}
```
阅读全文