2 回答
已采纳
冯宝宝
TA贡献31条经验 获得超8个赞
你这个不是结构体问题,是值传递问题,1楼已经说了,你想通过一个函数来改变结构体里值需要指针,,具体你自己看一楼。可以
#include <stdio.h> #include <stdlib.h> struct T { int x; char c; }; void f(struct T *b); struct T* f1(struct T *b); int main() { struct T *p; struct T a= {110,'z'}; p=f1(&a); printf("%d %c\n",a.x,a.c); // p=&a; // f(p); // printf("%d %c\n",a.x,a.c); } void f(struct T *b) { (*b).x=20; (*b).c='y'; } struct T* f1(struct T *b) { (*b).x=20; (*b).c='y'; return b; }
badbomb
TA贡献16条经验 获得超10个赞
首先结构体做函数参数有三种传递方式
一是传递结构体变量,这是值传递,二是传递结构体指针,这是地址传递,三是传递结构体成员,当然这也分为值传递和地址传递。
以传值方式传递结构需要对整个结构做一份拷贝。
你这相当于是采用传值方式,应该传递结构体指针,才能改变结构体变量的值
- 2 回答
- 0 关注
- 1828 浏览
添加回答
举报
0/150
提交
取消