Skip to content
本页目录

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的值。