1 形参(形式参数)

在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。

2 实参(实际参数)

函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。

3 形参和实参的区别和联系

  1. 形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。

  2. 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。

  3. 实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。当然,如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型。

  4. 函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。

4 实例

请看下面的例子:

#include <stdio.h>
//计算从m加到n的值
int sum(int m, int n) {
    int i;
    for (i = m+1; i <= n; ++i) {
        m += i;
    }
    return m;
}
int main() {
    int a, b, total;
    printf("Input two numbers: ");
    scanf("%d %d", &a, &b);
    total = sum(a, b);
    printf("a=%d, b=%d\n", a, b);
    printf("total=%d\n", total);
    return 0;
}

运行结果:
Input two numbers: 1 100↙
a=1, b=100
total=5050

在这段代码中,函数定义处的 m、n 是形参,函数调用处的 a、b 是实参。通过 scanf() 可以读取用户输入的数据,并赋值给 a、b,在调用 sum() 函数时,这份数据会传递给形参 m、n。

从运行情况看,输入 a 值为 1,即实参 a 的值为 1,把这个值传递给函数 sum() 后,形参 m 的初始值也为 1,在函数执行过程中,形参 m 的值变为 5050。函数运行结束后,输出实参 a 的值仍为 1,可见实参的值不会随形参的变化而变化。

形参和实参详解

在C语言中,函数是一段完成特定任务的代码块,在函数定义时可以定义形式参数(形参),而在函数调用时传递实际参数(实参)。形参是函数定义中声明的参数变量,而实参是在函数调用时传递给函数的具体数值或变量。

下面是关于C语言函数形参和实参的基本知识点:

  1. 形式参数(形参):
    在函数定义时,可以声明一个或多个形式参数,它们位于函数名后的括号内。形参相当于函数内部的局部变量,用于接收传递给函数的值或引用。例如:

    int add(int a, int b) {
        return a + b;
    }
    
  2. 实际参数(实参):
    在调用函数时,需要提供与函数定义中形参类型和数量相匹配的实际参数,用于传递给函数使用。实参可以是常量、变量或表达式。例如:

    int result = add(3, 5); // 调用add函数,并传递实参3和5
    
  3. 传递方式:
    在C语言中,函数参数的传递方式有两种:按值传递和按地址传递。

    • 按值传递:将实参的值复制给形参,函数内部对形参的修改不会影响到实参的值。这是最常见的参数传递方式。
    • 按地址传递:将实参的地址(指针)传递给形参,函数内部可以通过指针来访问和修改实参的值。
  4. 默认参数:
    在C语言中,函数的形参可以设置默认值。当调用函数时没有提供对应的实参时,形参将使用默认值。例如:

    void greet(char *name, int age = 18) {
        printf("Hello, %s! You are %d years old.\n", name, age);
    }
    
    greet("John"); // 使用默认参数,输出:Hello, John! You are 18 years old.
    greet("Tom", 25); // 传递实参,输出:Hello, Tom! You are 25 years old.
    

函数的形参和实参在函数调用过程中起到了桥梁的作用,通过它们可以向函数传递数据,使函数能够执行相应的操作。形参提供了一种对函数输入进行抽象和通用化的方式,而实参则提供了具体的数值和变量供函数使用。

请注意以上只是对C语言函数形参和实参的简要说明,如果您需要更详细的解释和示例代码,建议查阅相关的C语言教程或参考文档,以获得详尽的信息和示例。

部分内容参考于C语言中文网;一个很不错的编程网站,建议大家多看看。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐