传值参数

初始化一个非引用类型的变量时,初始值被拷贝给变量,对变量的改动不会影响初始值:

    int n = 0;//int类型的初始变量
    int i = n;//i是n的值的副本
    i = 42;//i的值改变,n的值不变

函数对形参做的所有操作都不会影响实参,在fact函数内对变量val执行递减操作:

    ret *= val--;//将val的值减一

指针形参的行为与之类似:

//该函数接受一个指针,然后将指针所指的
void reset(int* ip) {
    *ip = 0;//改变指针ip所指对象的值
    ip = 0;//只改变了ip的局部拷贝,实参未被改变
}

调用reset函数之后,实参所指的对象被置为0,但是实参本身并没有改变:

    int i = 42;
    reset(&i);//改变i的值而非i的地址
    cout << "i = " << i << endl;
posted @ 2019-07-04 16:25  CodeWithMe  阅读(167)  评论(0)    收藏  举报