函数的形参和实参

//函数的形参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;}

那我们什么情况下传值?什么情况下传址?
仅仅为了获取 值,只需要传值。
在函数外部来操作函数内部,就要传址。

©著作权归作者所有:来自51CTO博客作者ンめ的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 函数的嵌套调用和链式访问
  2. 函数的声明和定义
  3. C语言函数功能的强大和入坑体会
  4. C语言中的函数概念
  5. Go语言RPC学习记录
  6. Spring的refresh()方法相关异常
  7. 使用C语言判断密码是否正确,三次失败就退出,超详细教程!!
  8. metilene:从BS-seq数据快速敏感地调用差异甲基化区域
  9. js:事件、留言板、常用字符串函数

随机推荐

  1. Android终于公布源代码
  2. android中悬浮显示可拖动的歌词栏
  3. Android 编程好书推荐
  4. coco2d-x android
  5. 常用的android权限配置和常用工具代码
  6. android 设置 永不休眠
  7. Android 使用Json实现服务器与客户端数据
  8. Android(安卓)Snippet
  9. android AppCompatEditText 样式(线条粗细
  10. Android欢迎页的逻辑实现