请教一下函数的参数及其传递方式

刚学到这一章,对那几种参数弄得晕头了。谁能帮我讲讲都有哪几种参数?比如说形参什么什么,实参要是什么什么。。还有那几种函数的返回值,怎么返回,都能返回什么?谢谢了,这个问题... 刚学到这一章,对那几种参数弄得晕头了。谁能帮我讲讲都有哪几种参数?比如说形参什么什么,实参要是什么什么。。还有那几种函数的返回值,怎么返回,都能返回什么?谢谢了,这个问题一直困扰了我很久,查了很久都没结果。哪位大大帮我解决一下这个问题,我一定终身感激不尽
在书上看到这几种:1、对象作为函数参数;2、对象指针作为函数参数;3、引用作为函数参数;4、默认参数; 我不是怎么懂这几种作为参数的时候,形参实参都要是什么?第一种就不用说了。主要是第二种和第三种。帮帮小弟,谢谢了
展开
 我来答
wn541200
2009-05-15 · TA获得超过500个赞
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:305万
展开全部
给你用C说明下第一种和第二种
#include <stdio.h>
void Func(int x)
{
x=20;
}
main()
{
int x=10;
Func(x);
printf("%d",x);
}

上面的本意是将x的值改为20

Func(x); 这样传x传到函数里面。发生的是值的copy.
(想想你在电脑上用ctrl+c的是候,原来那个文件还在,你复制过去的那个随便怎么改,原来那个文件还是不会变的)

调用函数时,在堆栈中另外分配内存来接收x的值(copy);
虽然变量名都是x,但实际上是占据着不同的内存地址空间。
在函数中你对x赋值也就可想而知为什么,回到主函数后,
x的值不变了。所以可以return回去就OK。

那如果,两个X占用同一块内存空间那就不一样了,
下面给出代码
#include <stdio.h>
void Func(int *x)
{
*x=20;
}
main()
{
int x=10;
Func(&x);
printf("%d",x);
}

函数传的是指针,
在函数中,对传入的地址所保存的内容进行改变。
(当你想返回两个值的时候,而只能用一个return时,比如说一个数组。)

引用就是个别名,你的名字叫张三,小名叫狗蛋,这两个名字指的都是你。(名字不同,但都是同一块内存空间)

引用的话,void Func(int &a);
调用的时候Func(a);
void Func(int *a);
调用的时候Func(&a);

比较一下是不是用户在调用这个函数的时候别人就不知道你用的是引用了,而后面那个一眼就可以看出来用了指针。
(有点类中 private 为了保护数据安全的意思)
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
wanfustudio
2009-05-13 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3772万
展开全部
那没有办法了

你能列出来的可以作为参数和返回值
数组不可以作为返回值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hacson
2009-05-13
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
形参就是函数声明里的参数,如字面意思,就是一个形式参数,并不是你程序中真正用到的,只是说明参数在函数里会怎么样传递怎么样用而已。
实际参数就是你定义了并真正使用的参数。

比如一个例子:

#include "stdio.h"

void display(int x)
{
printf("number is %d", x);
}

int main()
{
int y = 0;
display( y );
return 0;
}

x就是形参,y是实参,x只是说明参数在函数里怎么使用,而真正你定义并使用的是y。

如果上面的程序再改下:
#include "stdio.h"

void display(int x)
{
printf("number is %d", x);
}

int get()
{
int x;
scanf("%d", &x);
return x;
}

int main()
{
int y;
y = get();
display( y );
return 0;
}

get()函数就返回了一个整型给调用此函数的变量,返回值多种多样,在C++里也甚至可以返回一个类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
peachkun
2009-05-13 · TA获得超过883个赞
知道小有建树答主
回答量:246
采纳率:0%
帮助的人:208万
展开全部
int max(int data_a,int data_b)
{
return data_a >data_b?data_a:data_b;
}

int main(void)
{
printf("max = %d\n",max(5,8));
return 0;
}
max(int data_a,int data_b),data_a,data_b就是形参,
max(5,8)中的5,8就是实参 函数返回值:return data_a >data_b?data_a:data_b;返回两个数较大的一个,max(5,8)返回:8,所以运行后为:max = 8 因为函数中没有出口参数,只有入口参数,所以用return就可以返回了,呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式