C语言怎么向函数传递结构体
时间: 2024-12-18 16:13:20 浏览: 20
在C语言中,向函数传递结构体通常有两种方式:
1. **值传递**(Pass by value):
当直接将结构体作为函数参数传递时,实际上是复制一份结构体的副本。这意味着原结构体不会被修改,函数内部对副本的操作不会影响到外部的结构体。
```c
typedef struct {
int x;
int y;
} Point;
void print_point(const Point p) {
printf("x: %d, y: %d\n", p.x, p.y);
}
int main() {
Point p = {5, 10};
print_point(p); // 输出不会改变原结构体p
return 0;
}
```
2. **指针传递**(Pass by reference):
使用指针可以避免复制整个结构体,提高效率。通过将结构体的地址传递给函数,可以在函数内部直接操作原始数据。
```c
void change_point(Point *p) {
p->x = 15; // 直接修改指向的结构体
p->y = 20;
}
int main() {
Point p = {5, 10};
change_point(&p); // 函数修改的是变量p所指向的结构体
printf("x: %d, y: %d\n", p.x, p.y); // 输出x:15, y:20
return 0;
}
```
阅读全文