//函数的形参
void SWAP (int* x, int* y) {
int tmp = 0;
tmp = *x;
*x = *y;
*y = tmp;
}
int main() {
int a = 10;
int* pa=&a;
int b = 20;
int* pb=&b;
printf("a=%d,b=%d \n", a, b);
//把a和b的地址传过去
//函数的实参
SWAP(&a, &b);
printf("a=%d,b=%d", a, b);
return 0;
}
实参:真实传给函数的参数,叫做实参,实参可以是常量,表达式,变量,函数等,无论是实参是何种类型的量,在进行函数调用的时候,他们都必须有确定的值,以便把这些值传给形参。
int max = get_max(a, b);
int max = get_max(100, 300);
int max = get_max(100,300+1);
形参:函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数,形式参数当函数调用完成之后就自动销毁了,因此形式参数在函数中有效。
int get_max(int x, int y){
函数体
}
函数的形参和实参分别占用不同的内存块,对形参的修改不会影响实参。
void SWAP (int x, int y) {
int tmp = 0;
tmp = x;
x = y;
y = tmp;
}
int main() {
int a = 10;
int b = 20;
printf("a=%d,b=%d \n", a, b);
SWAP(a, b);
printf("a=%d,b=%d", a, b);
return 0;
}
把函数外部创建的内存地址传送给函数参数的一种调用函数的方式,这种传参方式可以让函数和函数外边的变量建立起正真的联系,也就是函数内部可以直接操做函数外部的变量。
#include <stdio.h>
//指针变量接收地址
void SWAP (int* x, int* y) {
int tmp = 0;
tmp = *x;
*x = *y;
*y = tmp;
}
int main() {
int a = 10;
int* pa=&a;
int b = 20;
int* pb=&b;
printf("a=%d,b=%d \n", a, b);
//把a和b的地址传过去
SWAP(&a, &b);
printf("a=%d,b=%d", a, b);
return 0;
}
那我们什么情况下传值?什么情况下传址?
仅仅为了获取 值,只需要传值。
在函数外部来操作函数内部,就要传址。
原文:https://blog.51cto.com/15100290/2675345