zoukankan      html  css  js  c++  java
  • c语言学习之基础知识点介绍(八):函数的基本用法

    本节开始说函数。

    一、函数的基本用法 

    /*
    作用:可以实现代码的复用,在一定程度上解决代码冗余的问题;方便后期维护。
    语法:
      void  函数名(){
             函数体;
      }
    函数命名要有意义,遵守驼峰命名法。起名要有意义,要做到看到函数名就知道函数体有什么作用。
    */
    //例如:
    void printfMsg(){
       printf("哈哈哈哈。");
    }
    
    int main(int argc,const char * argv[]){
          printfMsg();
          return  0 ;
    }

     二、带参数的函数

    /*
    带一个参数的函数:
             语法:
                   void  函数名(类型  形参名){
                             函数体;
                   }
    */
    //例如:
    void printfNumber(int num){
       printf("传入的参数为:%d 
    ",num);
    }
    
    int main(int argc , const char * argc[]){
           printfNumber(30);
           return 0;
    }
    
    /*
    带多个参数的函数: 
         语法:
                  void  函数名(类型  形参名1,类型  形参名2){
                             函数体;
                   }
    */
    //例如:
    void printfNumber(int num1,int num2){
       printf(" %d * %d = %d  
    ",num1,num2,num1*num2);
    }
    
    int main(int argc , const char * argc[]){
           printfNumber(30,10);
           return 0;
    }
    /*传多个以此类推。*/

    注意:1、函数如果有参数,调用该方法的时候,必须按照对应的顺序和个数给它传参数,否则会报错。

              2、函数的形参相当于在函数内部定义的局部变量,所以就不能在该方法中定义同名变量。

              3、调用函数的时候,给它传递参数,就相当于给形参赋值,如果形参和传参都是基本数据类型,当类型不匹配的时候,会发生强制转换。

    引出两个概念。

           形参:函数内定义的变量。

           实参:调用函数时传过去的值。

    注意:当函数的参数是基本数据类型的时候,在函数里改变了形参的值,不会影响到实参。 

    三、带返回值的函数

    /*
    比如:写一个函数来计算两个数字的加减乘除的结果,直接在函数中输出,这样做有点不太合适,也有点怪怪的,所以就需要函数给我们一个返回值。
    语法:
     返回值类型  函数名(参数列表){
         函数体;
         return 返回值;
     }
    注意:1、如果函数有返回值,可以选择接收和不接收,不会影响函数的执行。
                2、如果返回值是基本数据类型,在接收的时候,可以使用其他基本数据类型的变量来接收,但是会发生强制转换,所以不推荐这样做。
                3、在基本数据类型中,返回值的类型可以和函数定下的返回值类型不同,但是也会发生强制转换,不推荐这样做。
                4、如果 函数需要返回值,必须保证每条分支都有返回值。
    */
    //例如:
    int addNum(int num1 ,int num2){
        int result = num1+num2;
        return result;
    }
    int  isONum(int num ){
          if(num%2==0){
             return num;
          }else if(num %2 >0){
             return num;
          }else{  //如果不加一个else的话,程序会报错,程序不会分析你的逻辑。
             return num;
          }
    }
    int main (int argc ,const char * argc[]){
          int result= addNum(10,14);
          printf("两数之和为:%d 
    ",result);
          return 0;
    }

    上面用到了return关键字,这里来介绍下return

    /*
    return:
          1、 在有返回值的函数里,return可以帮值返回出去。
           2、如果函数没有返回值,也可以用return,但是return后面不能带值,否则会报错。
           3、可以结束循环。
    作用:结束函数。
    */

    四、函数的注意事项

    /*
    1、函数内部不可以定义其他函数,但是可以声明。
    2、函数可以调用其他的函数。
    3、函数不允许重名。
    4、编译器是自上而下编译的,所以在调用自定义函数时,需要把自定义函数写在main函数上方,如果想写在下面,则需要先声明。
    
    声明的注意事项:
           1、函数的声明可以卸载任意位置,但是必须要在调用该函数之前。
           2、函数的声明可以写n个。
           3、声明函数的时候,形参名可以省略。
           4、函数返回值是int时,可以不用声明(仅限mac),所以推荐任何函数,都先声明。
           5、声明函数的时候,最好和原函数头一样,推荐直接复制函数头,删掉大括号加上分号就可以了。。
    */
    //例如:
    int main(int argc,const char * argv[]){
         void test();//这句话是告诉编译器,我有这个方法,只不过在下面了。这样编译器就不报错,当然你下面没有这个函数编译器也不会报错。
         test();
         void test1(int );
         test1(10);
         return 0;
    }
    void test(){
      printf("咩哈哈哈");
    }
    void test1(int Num){
      printf("咩哈哈哈");
    }
  • 相关阅读:
    Unity场景加载完成回调
    UnityShader 一些算法总结
    Unity ugui 的 Button 组件的 点击、按下、抬起等按钮事件(eventTrigger)
    Unity 鼠标拖拽旋转物体
    JVM
    JVM
    JVM
    JVM
    JVM
    JVM
  • 原文地址:https://www.cnblogs.com/bobo-pcb/p/4913449.html
Copyright © 2011-2022 走看看