阅读 238

函数的形参和实参

函数的形参和实参

//函数的形参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博客作者ンめ的原创作品,如需转载,请注明出处,否则将追究法律责任


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐