函数的形参和实参
16lz
2021-03-28
函数的形参和实参
//函数的形参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;}
那我们什么情况下传值?什么情况下传址?
仅仅为了获取 值,只需要传值。
在函数外部来操作函数内部,就要传址。
更多相关文章
- 函数的嵌套调用和链式访问
- 函数的声明和定义
- C语言函数功能的强大和入坑体会
- C语言中的函数概念
- Go语言RPC学习记录
- Spring的refresh()方法相关异常
- 使用C语言判断密码是否正确,三次失败就退出,超详细教程!!
- metilene:从BS-seq数据快速敏感地调用差异甲基化区域
- js:事件、留言板、常用字符串函数