为了账号安全,请及时绑定邮箱和手机立即绑定

C语言,结构体,这个调用函数为啥没变化

C语言,结构体,这个调用函数为啥没变化

C
慕哥8183350 2018-01-15 13:03:21
查看完整描述

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;
}


查看完整回答
反对 回复 2018-01-15
  • 冯宝宝
    冯宝宝
    我也有点懵逼但是编译器显示结果正常,本来想不要返回值的那种函数。。。加了返回值就简单很多,直接作为参数,,,
?
badbomb

TA贡献16条经验 获得超10个赞

首先结构体做函数参数有三种传递方式

一是传递结构体变量,这是值传递,二是传递结构体指针,这是地址传递,三是传递结构体成员,当然这也分为值传递和地址传递。

以传值方式传递结构需要对整个结构做一份拷贝。

你这相当于是采用传值方式,应该传递结构体指针,才能改变结构体变量的值


查看完整回答
反对 回复 2018-01-15
  • 2 回答
  • 0 关注
  • 1770 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信