猿问

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


慕哥8183350
浏览 1829回答 2
2回答

冯宝宝

你这个不是结构体问题,是值传递问题,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

首先结构体做函数参数有三种传递方式一是传递结构体变量,这是值传递,二是传递结构体指针,这是地址传递,三是传递结构体成员,当然这也分为值传递和地址传递。以传值方式传递结构需要对整个结构做一份拷贝。你这相当于是采用传值方式,应该传递结构体指针,才能改变结构体变量的值
随时随地看视频慕课网APP
我要回答