6.4 值传递
发布时间:
- 一、所谓值传递,就是函数调用时实参将数值传入给形参
- 值传递时,如果形参发生变化,井不会影响实参. 示例:
js
void swap (int num1, ant num2)
{
cout << "交还前: " << endl;
cout << "num1 = " << num1 << endi;
cout << "num2= " << num2 << endl;
int temp = num1;
num1 = num2;
num2 = temp,
cout << "交还后: " <<endl;
cout << "num1 = " << num1 << endi;
cout << "num2= " << num2 << endl;
//return;当國数产明时候,不需要返回值,可以不写return
}
练习 根据要求实现函数功能
1, 传入一个正整型参数,返回此数的二进制数中,各位上1的个数。
2,传入任意两个整数,求两个数之间所有自然数之和,包括两数本身。
3,给定一个正整数,输出小于此数的所有质数。
二、传址调用 这种调用方式是将实参变量的地址值传递给形参,这时形参实是指针,即让形参的指针指向实参地址,这里不再是将实参拷贝一个副本给形参,而是让形参直接指向实参,这就提供了一种可以改变实参变量的值的方法。现在用传址调用来实现swap:
js
#include<iostream>
using namespace std;
void swap(int &a,int &b) //定义swap()函数,形参是传址调用
{
int tmp=a;a=b;b=tmp;
}
int main()
{
int c=1,d=2;
swap(c,d); //交换变量
cout<<c<<' '<<d<<endl;
return 0;
} //程序输出为:2 1
在此例中,因为swap函数的参数为传址调用,&a是指实参变量的地址值传递给形参,所以,在函数swap中修改a,b的值相当于在主函数main中修改c,d的值。