按值传递:
函数是定义在main函数外面的,首先声明函数(那个我要出场了,告诉下你们我的大名+类型),然后在main后面定义下函数体是什么!而程序的主体main中怎么用函数呢??
这里我们将其称作调用函数,调用函数需要向函数传递输入(参数),那么第一种传参方式我们称为按值传递(后面还会出现指针传递和引用传递)。首先明确按值传递的机制:在main中调用函数,这里会将实参传递给我们声明和定义的函数,实参并不是直接传递给函数的,而是先制作参数值副本,存储在栈上,然后将这个副本用于我们定义的函数中。注意main和定义函数两个部分在不同存储空间中工作,这就带来个问题,我们进行的操作只是改变了定义函数空间中的参数值,而main空间中我们并没有改变参数值!
void change(int);
int main()
{
int num = 9;
change(num);
cout << num;
}
void change(int num){
num++;
}
按指针传递:
#include <iostream>
using namespace std;
int chg(int *, int *);
int main() {
int num1 = 2;
int num2 = 3;
chg(&num1, &num2);
cout << num1 << ',' << num2;
}
int chg (int *p1, int *p2){
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
但是注意不要交换地址,而是交换地址指向的值:
int chg (int *p1, int *p2){
int *temp;
temp = p1;
p1 = p2;
p2 = temp;
}