定义函数

返回值类型 函数名([参数列表]){函数主体}

  • 注意不能在函数中定义函数。定义函数在主函数外定义
  • void返回值也是可以写return语句的。但是不返回任何值。即**return;**
  • 返回值为非void时记得写return

    函数声明

    返回值类型 函数名([参数列表]);

  • 当您在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的

  • 函数定义在调用后也是没问题的(还是写以下,有没坏处,也可以避免问题)
  • 声明时参数列表可以不写参数名只写参数类型

    函数参数

函数参数被称作形式参数 。作用域仅限于函数内。 **在进入函数时被创建,退出函数时被销毁。**
有两种向函数传递参数的 方式

  • 传值调用
  • 引用调用 :该方法把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

    • 默认情况下 ,c语言采用值传递

      引用调用

      c语言中采用指针来实现引用调用。引用数组也可以看成是采用指针进行引用传递 ```c / 函数定义 / void swap(int x, int y) { int temp; temp = x; / 保存地址 x 的值 / x = y; / 把 y 赋值给 x / y = temp; / 把 temp 赋值给 y /

      return; }

include

/ 函数声明 / void swap(int x, int y);

int main () { / 局部变量定义 / int a = 100; int b = 200;

printf(“交换前,a 的值: %d\n”, a ); printf(“交换前,b 的值: %d\n”, b );

/* 调用函数来交换值

  1. * &a 表示指向 a 的指针,即变量 a 的地址
  2. * &b 表示指向 b 的指针,即变量 b 的地址

*/ swap(&a, &b);

printf(“交换后,a 的值: %d\n”, a ); printf(“交换后,b 的值: %d\n”, b );

return 0; } 交换前,a 的值: 100 交换前,b 的值: 200 交换后,a 的值: 200 交换后,b 的值: 100 ``` 注意函数参数列表为指针型,则调用函数时也传指针型或者传&变量


传递数组的例子见c语言传递数组、