C中的形式参数和实际参数

2025年8月4日 | 阅读 8 分钟

在C编程语言中,参数主要用于在函数之间传递值或引用。它们充当调用函数和被调用函数之间的连接,从而实现数据的传输和处理。参数主要有两种类型:形式参数和实际参数。

C中的形式参数

在C编程中,形式参数也称为形式参数。形式参数是在函数定义中出现的变量。这些参数用于接收调用函数提供的值。当调用函数时,实际参数会被复制到形式参数中。

语法

它具有以下语法:

在这个语法中,

  • return_type: 表示元素的返回类型。
  • function_name: 表示函数名称。
  • data_type: 表示数据类型。
  • parameter1, parameter2: 表示形式参数。

形式参数的声明和定义

如果我们想声明或定义形式参数,可以使用以下语法:

在此函数声明中,给出的 a 和 b 是形式参数。这些参数主要用于在函数调用期间接收传递的实际参数的值。

形式参数示例

让我们以一个例子来说明C中的形式参数。

示例

编译并运行

输出

The Length is 17
The Width is 13
Area of the Rectangle is: 221

说明

在此示例中,我们使用了 calculatingArea 函数,该函数接受两个形式参数 length 和 width,并返回它们的乘积作为矩形的面积。在 main() 函数中,传递了实际参数 17 和 13,并与输入尺寸一起打印出结果 221。

形式参数的特点

C中形式参数的几个特点如下:

  • 形式参数是在函数定义中出现的变量,用于接收输入值。
  • 在调用函数时,它们会根据实际参数获得值。
  • 这些参数仅在函数执行期间存在,并保存在局部内存中。
  • 形式参数的数量、顺序和数据类型应与实际参数相同。
  • 函数内的形式参数类似于普通变量,用于计算或操作。
  • 它们允许函数处理多个输入,从而使代码更具可重用性和组织性。
  • 使用形式参数有助于函数保持自包含,从而减少对全局变量的依赖。
  • 它们指定了函数将如何与数据交互,从而提高了代码的可读性并减少了错误。

C中的实际参数

在C编程语言中,实际参数是在调用函数时传递给函数的实际值。它们也称为参数。这些参数可以是常量、变量、表达式,甚至是其他函数调用。当我们调用一个函数时,会评估实际参数,并将其值复制到被调用函数的相应形式参数中。

语法

它具有以下语法:

在这个语法中,

  • function_name: 表示函数名称。
  • val1, val2: 表示实际参数。

实际参数的声明和定义

在C中,实际参数用括号括起来,并用逗号分隔。例如,考虑以下函数调用:

在此函数调用中,2 和 3 是实际参数,它们被传递给接受两个形式参数的 add 函数。

实际参数示例

让我们以一个例子来说明C中的实际参数。

示例

编译并运行

输出

The given length is = 15
The given width is = 7
The Perimeter of a rectangle is = 44   

说明

在此示例中,我们使用 calculatingParmeter 函数来计算矩形的周长。它接受形式参数 length 和 width,并返回 2 * (length + width)。该函数从 main() 函数接收实际数字 15 和 7,并与原始测量值一起打印出计算出的周长 44。

实际参数的特点

C中的实际参数有几个特点。其中一些如下:

  • 当我们调用一个函数时,实际参数是提供给它的值。
  • 它们可以是常量、变量、表达式或来自其他函数的返回值。
  • 它们存在于函数调用中,而不是函数定义中。
  • 实际参数的数量和类型应与形式参数相同。
  • 这些值被复制到形式参数中,并在执行期间由函数使用。
  • 它们代表函数将要操作的输入数据。
  • 实际参数使得同一个函数可以根据输入提供多个输出。
  • 它们对于调用者和函数之间的有效通信是必需的。

C中参数传递的类型

C中有几种参数传递类型。其中一些如下:

1) 值传递(使用形式参数和实际参数)

在值传递中,当我们调用任何函数时,实际参数的副本会传递到形式参数中。对形式参数所做的修改不会影响实际参数。

使用形式参数和实际参数的值传递示例

让我们以一个例子来说明C中的值传递,使用形式参数和实际参数,如下所示:

示例

编译并运行

输出

The Sum of the two numbers is: 30 

说明

在此示例中,我们演示了C中的值传递。addingNumbers 函数通过形式参数 a 和 b 接收实际参数 Num_1 和 Num_2 的副本,并返回它们的总和。原始值保持不变,函数返回的值用于打印结果 30。

2) 引用传递(使用指针)

在C编程语言中,通过使用指针来实现引用传递。它允许将实际内存地址传递给函数。它还允许函数修改原始值。

使用指针进行引用传递,并附带形式参数和实际参数示例

让我们以一个例子来说明C中指针的引用传递。

示例

编译并运行

输出

Before swapping the values are: a = 14, b = 12
After swapping the values are: a = 12, b = 14

说明

在C中,通过指针传递参数意味着函数接收实际参数内存位置的指针。它允许函数通过解引用指针直接修改实际参数的值。

3) 使用指针传递参数

在C中,通过指针传递参数意味着函数接收实际参数内存位置的指针。它允许函数通过解引用指针直接修改实际参数的值。

使用指针传递参数示例

让我们以一个例子来说明如何在C中使用指针传递参数。

示例

编译并运行

输出

The allocated and initialized array is:
0 1 2 3 4

说明

在此示例中,我们通过传递指向另一个指针的指针 (int**) 在函数内动态分配数组内存。然后,allocate 函数分配内存并从 0 到 4 初始化值。

C中实际参数和形式参数的区别

C中的实际参数和形式参数之间有几个区别。其中一些如下:

方面参数形式参数
定义在函数调用期间将值传递给函数。变量在函数声明中声明。
目的它向函数提供输入数据。它在函数内部接受并使用输入数据。
数据类型它包含各种数据类型,如常量、变量、表达式和函数调用。变量声明应与指定的数据类型有效。
控制它由调用者(main 函数或其他函数)控制。它由被调用的函数控制。
生命周期它存在于调用函数的范围内。它仅在函数执行期间存在(局部范围)。
可变性实际参数的变化不会改变形式参数(值传递)。除非使用指针,否则形式参数接收副本。
例如:add(5, 10) 生成 5 和 10 作为实际参数。int add(int a, int b) 生成 a 和 b 作为形式参数。
传递类型它可以按值或按引用传递。值可以通过副本(值)或地址(引用)接收。

结论

总之,C的形式参数和实际参数有助于管理函数之间的数据流,确保正确的值分配和模块化设计。理解它们的函数对于开发高效且可维护的C程序至关重要。

形式参数和实际参数常见问题解答

1) C中的形式参数与实际参数有何区别?

在C编程中,实际参数是在函数调用期间传递给函数的实际值或变量。另一方面,形式参数是在函数定义中声明的变量,用于接收这些值。

2) 实际参数和形式参数的名称可以相同吗?

是的,它们的名称可以相同,但它们存储在不同的内存区域。函数将使用形式参数而不是原始变量。

3) 参数是在函数调用之前还是之后进行评估?

在C编程中,实际参数在函数调用之前进行评估。评估结果随后传递给函数。

4) 可以将表达式或函数调用作为实际参数传递吗?

实际参数可以是常量、变量、表达式或来自其他函数的返回值。

5) 对形式参数的修改会影响实际参数吗?

默认情况下,对形式参数的更改不会影响实际参数。为了修改实际变量,我们必须使用指针(引用传递)。


下一个主题C中的位填充