c语言实参和形参的传递问题
为什么有时候是单向,有时候是双向?第一题:#include<stdio.h>typedefstruct{intnum;doubles;}REC;voidfunl(RECx...
为什么有时候是单向,有时候是双向?
第一题:
#include <stdio.h>
typedef struct
{ int num;double s;}REC;
void funl(REC x) {x.num=23;x.s=88.5;}
main()
{ REC a={16,90.0);
fun1(a);
printf("%d\n",a.num);
}
程序运行后的输出结果是__【14】__。
参考答案:16
第二题:
#include<stdio.h>
#include<string.h>
struct A
{ int a;char b[10];double c;};
struct A f(struct A t);
main()
{ struct A a={1001,"ZhangDa",1098.0);
a=f(a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
struct A f(struct A t)
{ t.a=1002;strcpy(t.b,"changRong");t.c=1202.0;return t;}
程序运行后的输出结果是________。
A)1001,ZhangDa,1098.0
B)1002,ZhangDa,1202.0
C)1001,ChangRong,1098.0
D)1002,ChangRong,1202.0
参考答案:D
第一题为什么是单向的传递,不能传回,而第二题能够传回?求解答 展开
第一题:
#include <stdio.h>
typedef struct
{ int num;double s;}REC;
void funl(REC x) {x.num=23;x.s=88.5;}
main()
{ REC a={16,90.0);
fun1(a);
printf("%d\n",a.num);
}
程序运行后的输出结果是__【14】__。
参考答案:16
第二题:
#include<stdio.h>
#include<string.h>
struct A
{ int a;char b[10];double c;};
struct A f(struct A t);
main()
{ struct A a={1001,"ZhangDa",1098.0);
a=f(a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
struct A f(struct A t)
{ t.a=1002;strcpy(t.b,"changRong");t.c=1202.0;return t;}
程序运行后的输出结果是________。
A)1001,ZhangDa,1098.0
B)1002,ZhangDa,1202.0
C)1001,ChangRong,1098.0
D)1002,ChangRong,1202.0
参考答案:D
第一题为什么是单向的传递,不能传回,而第二题能够传回?求解答 展开
5个回答
展开全部
第一个题目void funl(REC x) {x.num=23;x.s=88.5;}也没有让返回什么啊
这是个实参传入,并不改变传入参数的各个变量
第二个题目同样传入的是个实参,并不改变原来的结构体a的值,
但是由于struct A f(struct A t)的返回值是个结构体,并将该结构体又重新赋值给了a--->a=f(a);
才导致了结构体a的值发生了变化。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同学你好;
我看了你的 问题,这个问题中有个关键 地方你没明白,就是第一题中
fun1(a);是类外函数,而第二题中
struct A f(struct A t);类中的成员函数;
成员数中有个默认的this指针,当对象调用这个函数时,就将对象的地址传给了这个函数的
this指针所以函数在执行对对象中数据操作时就直接修改了对象原有 的 数据
但是第一个函数不是类中的成员函数,
执行 fun1(a);时只是将a 的数据复制了一份在复制的上面操作,而a中的数据没有因此而改变
希望你能理解,有疑问可以hi我,希望你能采纳
我看了你的 问题,这个问题中有个关键 地方你没明白,就是第一题中
fun1(a);是类外函数,而第二题中
struct A f(struct A t);类中的成员函数;
成员数中有个默认的this指针,当对象调用这个函数时,就将对象的地址传给了这个函数的
this指针所以函数在执行对对象中数据操作时就直接修改了对象原有 的 数据
但是第一个函数不是类中的成员函数,
执行 fun1(a);时只是将a 的数据复制了一份在复制的上面操作,而a中的数据没有因此而改变
希望你能理解,有疑问可以hi我,希望你能采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个根本就运行不了。单向传递的是数值,双向传递的是地址。如果传递的是数值,要想返回,得用return语句。在c++里还有引用的概念。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么跟什么...什么单向双向的,第一题没返回值,第二题有返回值,是不是这个问题,你可以去华夏联盟问问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询