目录
函数调用的形式
函数调用的形式有以下几种:
-
传值调用:这种形式是把一个变量的值传递给函数的形式参数。
-
引用调用:这种形式是将变量的地址直接传入函数。
扫描二维码关注公众号,回复: 16708957 查看本文章 -
传地址调用:这种形式是通过指针来实现的,把变量的引用传入函数。
函数名
函数名可以是任何有效的标识符,它应该简短且有意义,能够清晰地表达函数的功能。函数名通常使用小写字母,如果函数名包含多个单词,可以使用下划线分隔。在调用函数时,需要使用函数名后面跟随一对圆括号,并将参数列表放在括号内。例如,如果有一个名为“add”的函数,它接受两个整数参数并返回它们的和,那么可以这样调用它:result = add(2, 3)。
函数调用语句
以下是一个简单的C语言代码示例,演示了如何定义和调用一个函数:
c复制代码
#include <stdio.h> |
|
// 函数定义 |
|
int add(int x, int y) { |
|
return x + y; |
|
} |
|
int main() { |
|
int a = 2; |
|
int b = 3; |
|
int result; |
|
// 函数调用 |
|
result = add(a, b); |
|
printf("The sum of %d and %d is %d\n", a, b, result); |
|
return 0; |
|
} |
在上面的代码中,我们定义了一个名为“add”的函数,它接受两个整数参数并返回它们的和。在main函数中,我们声明了三个整数变量a、b和result,并将a和b的值分别设置为2和3。然后,我们调用了add函数,并将a和b作为参数传递给它。函数返回的结果被存储在result变量中。最后,我们使用printf函数打印出a、b和result的值。
函数表达式
函数表达式是C语言中的一个重要概念,它用于定义函数的功能和参数。函数表达式由函数名、参数列表和函数体组成。
以下是一个简单的C语言代码示例,演示了如何定义和调用一个函数:
c复制代码
#include <stdio.h> |
|
// 函数定义 |
|
int add(int x, int y) { |
|
return x + y; |
|
} |
|
int main() { |
|
int a = 2; |
|
int b = 3; |
|
int result; |
|
// 函数调用 |
|
result = add(a, b); |
|
printf("The sum of %d and %d is %d\n", a, b, result); |
|
return 0; |
|
} |
在上面的代码中,我们定义了一个名为“add”的函数,它接受两个整数参数并返回它们的和。函数表达式为:int add(int x, int y)
。其中,int
表示函数的返回类型为整数类型,add
是函数名,x
和y
是函数的参数列表。函数体为:return x + y;
,它返回两个参数的和。在main函数中,我们声明了三个整数变量a、b和result,并将a和b的值分别设置为2和3。然后,我们调用了add函数,并将a和b作为参数传递给它。函数返回的结果被存储在result变量中。最后,我们使用printf函数打印出a、b和result的值。
通过函数表达式,我们可以将复杂的功能分解成简单的函数,使代码更加易于理解和维护。函数也可以重用,避免重复编写相同的代码。
函数参数
在C语言中,函数参数可以以以下几种形式出现:
- 值参数(Pass by Value): 在此方法中,函数接收的是实际参数的副本,而不是实际参数本身。因此,在函数内部,副本和原始变量是两个完全独立的实体,修改副本的值并不会影响原始变量的值。
例如:
c复制代码
void add(int a, int b) { |
|
a = a + b; |
|
} |
在这个例子中,a
和 b
是值参数。在函数 add
内部,a
和 b
是 main
函数中变量的副本。所以,即使在 add
函数内部改变了 a
的值,main
函数中的 a
的值也不会改变。
2. 引用参数(Pass by Reference): 在此方法中,函数接收的是实际参数的地址,而不是实际参数的值。因此,在函数内部,可以通过这个地址来修改原始变量的值。
例如:
c复制代码
void add(int *a, int *b) { |
|
*a = *a + *b; |
|
} |
在这个例子中,a
和 b
是指向整数的指针。在函数 add
内部,我们可以通过指针 a
和 b
来修改 main
函数中的变量的值。
3. 数组参数(Pass by Array): 数组参数是引用参数的一种特殊形式。在此方法中,函数接收的是一个指向数组首元素的指针。因此,在函数内部,可以通过这个指针来访问和修改数组的元素。
例如:
c复制代码
void printArray(int arr[], int size) { |
|
for (int i = 0; i < size; i++) { |
|
printf("%d ", arr[i]); |
|
} |
|
} |
在这个例子中,arr
是一个指向整数数组的指针,而 size
是数组的大小。在函数 printArray
内部,我们可以通过指针 arr
来访问和打印数组的元素。
4. 函数指针参数(Pass by Function Pointer): 在此方法中,函数接收的是一个指向其他函数的指针。因此,在函数内部,可以通过这个函数指针来调用其他的函数。
例如:
c复制代码
void (*fp)(int); |
|
void add(int a, int b) { |
|
printf("%d\n", a + b); |
|
} |
|
void callFunction(int a, int b, void (*fp)(int)) { |
|
fp(a + b); |
|
} |
|
int main() { |
|
callFunction(2, 3, add); |
|
return 0; |
|
} |
在这个例子中,fp
是一个指向函数的指针。在函数 callFunction
内部,我们可以通过这个函数指针 fp
来调用其他的函数。