函数


  • 概念:一段具有 特定功能 的代码块
  • 声明:在 调用函数 之前,告诉 系统 有这个函数
    1. 可以在函数外声明
    2. 可以在函数内声明
    3. 可以省略形参名称
    
    // 函数外声明
    void callPhone(char number[]);
    int main() {
      // 函数内省略形参名称声明
      int sum(int, int);
      callPhone("110");
      int result =  sum(1, 1);
      printf("%i\n", result);
      return 0;
    }
    void callPhone(char number[]) {
      printf("给 %s 打电话\n", number);
    }
    int sum(int v1, int v2) {
        return v1 + v2;
    }
    
  • 实现:完整地 实现函数功能 的代码
    /*
      格式:返回值类型 函数名称(数据类型 变量名称, ...) {
              函数体;
           }
     */
    int getMax(int v1, int v2) {
      int max = v1 > v2 ? v1 : v2;
      return max;
    }
    
  • 调用
    /*
     函数名称(实参列表)
     */
    void sum(int, int);
    int main() {
      sum(10, 10);
      return 0;
    }
    void sum(int a, int b) {
      printf("%i\n", a + b);
    }
    
  • 形式
    1. 没有参数没有返回值
       void eatApple() {
          printf("吃苹果\n");
       }
    
    2. 没有参数有返回值
       int getMoney() {
          return 100;
       } 
    
    3. 有参数没有返回值
       void eatFood(char food[]) {
          printf("吃%s\n", food);
       }
    
    4. 有参数有返回值
       int getMin(int v1, int v2) {
          int min = v1 < v2 ? v1 : v2;
          return min;
       }
    
  • 作用
    1. 方便代码的重用
    2. 分解任务,简化程序逻辑
    3. 使代码更加模块化
    
  • 注意
    • 一维数组
      void change(int values[]);
      int main() {
          int nums[] = {1, 3, 5};
          // 地址传递
          change(nums);
          printf("%i\n", nums[0]);
          return 0;
      }
      // 如果一维数组作为函数形参,元素个数可以省略
      void change(int values[]) {
          values[0] = 66;
      }
      
    • 二维数组
      void change(int nums[]);
      void changeTwo(int names[][3]);
      int main() {
        int nums[][3] = {
          {1, 3, 5},
          {2, 4, 6}
        };
        // 地址传递
        change(nums[0]);
        printf("%i\n", nums[0][0]);
        // 地址传递
        changeTwo(nums);
        printf("%i\n", nums[0][1]);
        return 0;
      }
      void change(int nums[]) {
        nums[0] = 66;
      }
      // 如果二维数组作为函数形参,一维数组个数可以省略
      void changeTwo(int names[][3]) {
        names[0][1] = 88;
      }
      

你可能感兴趣的:(函数)