C++按值传递详解
发布时间:2020-12-16 07:38:45 所属栏目:百科 来源:网络整理
导读:我们知道,形参是在函数定义的括号内定义的专用变量,它们的目的是保存按实参传递给它们的信息,实参被列在函数调用语句的括号内。 通常,当信息被传递给一个函数时,采用按值传递的方式,这意味着形参接收的是传递给它的值的副本。如果形参的值在函数内部被
我们知道,形参是在函数定义的括号内定义的专用变量,它们的目的是保存按实参传递给它们的信息,实参被列在函数调用语句的括号内。 通常,当信息被传递给一个函数时,采用按值传递的方式,这意味着形参接收的是传递给它的值的副本。如果形参的值在函数内部被改变,那么它对原始实参是没有影响的。下面的程序演示了这个概念。 #include <iostream> using namespace std; // Function Prototype void changeMe(int aValue); int main() { int number = 12; // Display the value in number cout << "In main number is " << number << endl; //Call changeMe,passing the value in number as an argument changeMe(number); // Display the value in number again cout << "Back in main again,number is still " << number << endl; return 0; } void changeMe(int myValue) { //Change the value of myValue to 0 myValue = 0; //Display the value in myValue cout << "In changeMe,the value has been changed to " << myValue << endl; }程序输出结果:
In main number is 12 并且,即使在 changeMe 函数中形参变量 myValue 已更改,实参 number 也不会被修改。这是因为 myValue 变量只包含了 number 变量的副本。只是这个副本被改变,而不是原来的。changeMe 函数无法访问原始实参。图 1 说明了形参变量在内存中的存储位置与原始实参的存储位置是分开的。 ![]() 图 1 原始实参和函数形参在内存中是分开存储的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |