龙空技术网

C语言备忘录 - 12. 函数基础

LIWY1024 39

前言:

此时我们对“c语言值传递函数怎么写”大概比较注重,我们都想要剖析一些“c语言值传递函数怎么写”的相关文章。那么小编也在网络上汇集了一些有关“c语言值传递函数怎么写””的相关资讯,希望大家能喜欢,看官们一起来学习一下吧!

一、函数的定义

函数由函数头和函数主体组成,函数头主要包括函数名称、函数返回值类型、函数参数列表,函数主体即调用函数时要执行的代码块,当函数有返回值时,可以使用 return 返回数据。

/* 定义一个 add 函数, 有两个 int 类型的参数, 返回值类型为 int 类型。 */int add(int num1, int num2){  /* 函数主体 */  int result = num1 + num2;  /* 返回函数结果 */  return result;}/* 函数无需返回值时,返回类型为 void 函数的参数列表也可以为空 */void print_hello(){  printf("Hello C!");}
二、函数的声明与调用

函数声明会告诉编译器函数名称及如何调用函数,函数的实际主体可以单独定义。

#include <stdio.h>/* 函数声明 *//* 函数声明时,参数名称可以省略 */int add(int, int);/* 函数的定义与声明 *//* 同一源文件中,当函数定义在调用之前,可以省略声明 */int max(int fir, int sec){  return fir >= sec ? fir : sec;}int main(){  int a = 100, b = 200;  int sumNum, maxNum;  /* 调用函数 */  sumNum = add(a, b);  maxNum = max(a, b);  printf("sumNum = %d\n", sumNum);  printf("maxNum = %d\n", maxNum);  return 0;}/* 定义 add 函数 */int add(int num1, int num2){  // 计算两数之和  int result = num1 + num2;  return result;}

而如果函数的定义是在其他源文件中的,则函数声明是必需的,您应该在调用函数的文件顶部声明函数。

/* test1.c */// 函数定义int add(int num1, int num2){  return num1 + num2;}
/* test.c */#include <stdio.h>#include "test1.c"/* 函数声明 */int add(int num1, int num2);int main(){  int a = 100, b = 200;  int sumNum;  /* 调用函数 */  sumNum = add(a, b);  printf("sumNum = %d\n", sumNum);    return 0;}
三、函数的参数

如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。

当调用函数时,有两种向函数传递参数的方式:值传递与引用传递。

1. 值传递

将参数的实际值复制给函数的形式参数。这种情况下,修改函数内的形式参数不会影响实际参数。默认情况下,C 语言使用传值调用方法来传递参数。

#include <stdio.h>/* 函数声明 */void swap(int x, int y);int main(){  /* 局部变量定义 */  int a = 100;  int b = 200;  printf("交换前:a=%d,b=%d\n", a, b);  /* 调用函数来交换值 */  swap(a, b);  printf("交换后:a=%d,b=%d\n", a, b);  return 0;}/* 函数定义 */void swap(int x, int y){  int temp;  /* 交换 x 与 y */  temp = x;  x = y;  y = temp;}
$gcc test.c && ./a.out交换前:a=100,b=200交换后:a=100,b=200

2. 引用传递

引用传递的方式,形参为指向实参地址的指针,当对形参的指向数据操作时,就相当于对实参本身进行了操作。

#include <stdio.h>/* 函数声明 */void swap(int *x, int *y);int main(){  /* 局部变量定义 */  int a = 100;  int b = 200;  printf("交换前:a=%d,b=%d\n", a, b);  /* 调用函数来交换值 */  swap(&a, &b);  printf("交换后:a=%d,b=%d\n", a, b);  return 0;}/* 函数定义 */void swap(int *x, int *y){  int temp;  /* 交换 x 与 y */  temp = *x;  *x = *y;  *y = temp;}
$gcc test.c && ./a.out交换前:a=100,b=200交换后:a=200,b=100

标签: #c语言值传递函数怎么写 #c语言 传值