函数
int func(int x){ //x:形式参数 .... } int main(){ .... int res=func(z); //z:实际参数 }
实参与形参具有不同的存储单元,
实参与形参变量的数据传递是“值传递”;
函数调用时,系统给形参分配存储单元,并将实参对应的值传递(copy)给形参;
P.S. 实参与形参的类型必须相同或可以兼容;
示例:
#include<iostream> using namespace std; void exchange(int a, int b){ int p; p = a; a = b; b = p; } int main(){ int a = 3, b = 5; exchange(a, b); cout<<a<<" "<<b<< endl; return 0; }
输出结果将会是3 5. 因为在调用exchange()时,main函数里的a和b的值被copy给exchange(),然后修改的是exchange函数内存空间里的a和b,而不是main函数内的。那如何实现exchange功能呢?可以用指针
#include<iostream> using namespace std; void exchange(int *a, int *b){ int p; p = *a; *a = *b; *b = p; } int main(){ int a = 3, b = 5; exchange(&a, &b); cout<<a<<" "<<b<< endl; return 0; }