在C语言中,函数调用和函数传参是编写模块化、可复用代码的重要概念。函数是一段完成特定任务的代码块,可以在程序中被多次调用,从而实现代码的重用性。函数调用涉及到调用函数的过程,而函数传参则涉及到将数据传递给函数以供其使用。
以下是关于函数调用和函数传参的详细说明和示例代码:
### 函数定义和声明
在使用函数之前,我们需要定义和声明函数。函数定义是指函数实际的代码块,而函数声明则是告诉编译器有这样一个函数存在。示例:
```c
#include <stdio.h>
// 函数声明
int add(int a, int b);
int main() {
int result = add(3, 5); // 调用函数add并传递参数3和5
printf("Result: %d\n", result);
return 0;
}
// 函数定义
int add(int a, int b) {
return a + b;
}
```
### 函数传参方式
C语言支持多种函数传参的方式,包括传值、传指针和传数组等。以下是这些方式的详细说明和示例:
1. **传值(按值传递):**
在函数调用时,将实际参数的值复制给函数的形式参数。修改形式参数的值不会影响实际参数的值。
```c
#include <stdio.h>
void modifyValue(int x) {
x = x * 2;
printf("Inside function: %d\n", x);
}
int main() {
int num = 5;
modifyValue(num);
printf("Outside function: %d\n", num);
return 0;
}
```
2. **传指针(按引用传递):**
在函数调用时,将实际参数的地址传递给函数的形式参数。通过指针可以修改实际参数的值。
```c
#include <stdio.h>
void modifyByPointer(int *ptr) {
*ptr = *ptr * 2;
printf("Inside function: %d\n", *ptr);
}
int main() {
int num = 5;
modifyByPointer(&num);
printf("Outside function: %d\n", num);
return 0;
}
```
3. **传数组:**
数组传参与传指针类似,函数接收的是数组的首地址。但在函数参数中,我们可以指定数组的大小。
```c
#include <stdio.h>
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int numbers[] = {1, 2, 3, 4, 5};
int length = sizeof(numbers) / sizeof(numbers[0]);
printArray(numbers, length);
return 0;
}
```
函数调用和函数传参是C语言中非常基础且重要的概念,通过它们可以实现代码的模块化和重用,从而提高代码的可维护性和可读性。