首页 > 其他 > 详细

函数的形参和实参

时间:2021-03-28 17:12:13      阅读:11      评论:0      收藏:0      [点我收藏+]
函数的形参和实参

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!