1.函数的参数传递指的是什么
函数的参数传递:当进行函数调用的时候,要填入与函数形式参数个数相同的实际参数,在程序运行的过程中,实参会将参数值传递给形参,这就是函数的参数传递。
函数参数传递有以下三种:
一. 值传递
1. 用值传递方式,实际上是把实参的内容复制到形参中,实参和形参是存放在两个不同的内存空间中。在函数体内对形参的一切修改对实参都没有影响;
2. 如果形参是类的对象,利用值传递的话每次都要调用类的构造函数构造对象,效率比较低。
二. 指针传递(地址传递)
1. 当进行指针传递的时候,形参是指针变量,实参是一个变量的地址或者是指针变量,调用函数的时候,形参指向实参的地址;
2. 指针传递中,函数体内可以通过形参指针改变实参地址空间的内容。
三. 传递引用
1.引用实际上是某一个变量的别名,和这个变量具有相同的内存空间;
2. 实参把变量传递给形参引用,相当于形参是实参变量的别名,对形参的修改都是直接修改实参;
3. 在类的成员函数中经常用到类的引用对象作为形参,大大的提高代码的效率。
2.函数的参数传递有三种方式
#include <iostream>
using namespace std;
//传值调用
void chuanzhi(int a,int b)
{
int t=a;
a=b;
b=t;
cout<<;"传值调用函数里交换完后a,b值:";
cout<<a<<" "<<b<<endl;
}
//指针传递
void zhizhen(int *a,int *b)
{
int t=*a;
*a=*b;
*b=t;
cout<<;"指针传递函数里交换完后a,b值:";
cout<<*a<<" "<<*b<<endl;
}
//引用调用
void yinyong(int &a,int &b)
{
int t=a;
a=b;
b=t;
cout<<;"引用调用函数里交换完后a,b值:";
cout<<a<<" "<<b<<endl;
}
int main()
{
int x=2,y=4;
cout<<;"传值调用前:x=2,y=4"<<endl;
chuanzhi(x,y);
cout<<;"传值调用后:x="<<x<<",y="<<y<<endl<<endl;
x=2,y=4;
cout<<;"指针传递前:x=2,y=4"<<endl;
zhizhen(&x,&y);
cout<<;"指针传递后:x="<<x<<",y="<<y<<endl<<endl;
x=2,y=4;
cout<<;"引用调用前:x=2,y=4"<<endl;
yinyong(x,y);
cout<<;"引用调用后:x="<<x<<",y="<<y<<endl<<endl;
return 0;
}
写的有点多 运行完就 9 行
放在c++ 编译器里 运行下看看 就知道了
交换函数里面是肯定交换了,
而只有 指针传递和引用传递 才会对原来的变量值产生影响;
3.函数的参数传递有三种方式
#include
4.请教一下函数的参数及其传递方式
给你用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 为了保护数据安全的意思)
5.在C语言中,函数实参与形参之间的数据传递方式是( )传递方式
函数实参与形参之间的数据传递方式值传递)传递方式,在C语言中,数据传递方式有值传递和引用传递,值传递:传值,实际是把实参的值赋值给行参,相当于copy。
那么对行参的修改,不会影响实参的值 。引用传递: 实际是传值的一种特殊方式,只是他传递的是地址,不是普通的赋值,那么传地址以后,实参和行参都指向同一个对象,因此对形参的修改会影响到实参。
扩展资料
传值调用中,只使用了实参的值。传值调用机制里,形参是一个局部变量,其初始值为相应实参的值。在引用调用机制里,将实参的地址传递给形参,从表面上看是以实参变量取代形参,因此任何发生在形参上的改变实际上都发生在实参变量上。
引用传递是将变量的内存地址传递给方法,方法操作变量时会找到保存在该地址的变量,对其进行操作。会对原变量造成影响。可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。
参考资料:百度百科—引用传递