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 关注
- 2018 浏览
添加回答
举报
0/150
提交
取消
