C语言结构型、函数间数据传递问题?

如题所述

(1)
里传的是main里y的值,传过去的x在函数b里只是个局部对象,影响不到main里的实参y
(2)
的实质是传递了y数组的首地址,也就是y数组中唯一一个元素的地址,b函数里接受到x其实是main里y[0]的地址,所以&x[0]
==
main里的y,传给scanf的变量地址也就是main里y的地址,所以y接受到了b函数中scanf的输入
2的实质是传递变量的地址,然后通过地址修改实参,1则是传递变量本身的值
c里面如果想通过形参修改实参,只能使用2的方法
void
b(struct
a
x[
])
等价于
void
b(
struct
a*
x
)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-04
#include
<stdio.h>
struct
a
{
int
z;
};
void
b(struct
a
x)
{
scanf("%d",&x.z);
printf("%d\n",x.z);//在b函数中才可一输出刚才输入的值
}
main()
{
struct
a
y;
b(y);
scanf("%d",&y.z);//main函数中输入值,并输出
printf("%d",y.z);
}
说明:你在b函数中输入,相当于在内存中给b函数开辟了空间,你在b函数中输入数据,只对b函数中的有效,你想在main()函数中实现b函数输入功能又想在main函数中输出,我建议你用指针。指针传值肯定行的!
第2个回答  2020-01-15
不懂唉……
为啥我改成这样,还是不行,我觉得应该没问题吧,就是结果不对
#include<iostream>
using
namespace
std;
class
a
{
public:
int
z;
};
void
b(a
x)
{
cin>>x.z;
}
int
main()
{
a
y;
b(y);
cout<<y.z;
return
0;
}
相似回答