iOS笔记:第五篇 C语言 函数

来源:互联网 发布:windows打开81端口 编辑:程序博客网 时间:2024/06/05 11:17


 第一节 函数

 1.有一段代码需要重用/复用

   重用:这段代码需要在不同的地方使用到

   循环:一段代码反复不停的执行

 

 2.重用代码最简单的方式就是复制粘贴来实现

   1)代码冗余

   2)后期的维护和修改极其不方便

 

 3.函数

   作用:可以将一段代码科学的重用

   重用的原理:将要被重用的代码塞到函数中,要执行时只需要调用就可以来,

              函数一调用,函数中的代码就会被执行

   语法:

         函数的返回值类型函数名称([参数])

        

            要重用的代码;

            函数体;

         

   定义函数的位置:直接定义在C源文件之中,与main函数同级别

   函数的调用:CPU只会执行程序中的main函数中的代码,其他函数中的代码不会去主动执行

   调用语法:函数名();

 

   CPU执行到调用函数的语句的时候,就会跳转到函数的内部执行,当函数中代码执行完后用回来继续执行。

 

 4.什么时候需要定义一个函数

   当有一段代码需要被重用或者是在完成独立的功能时,就可以将其封装到一个函数中

 

 5.定义函数需要注意的点

   1)函数的返回值类型写的是void

   2)函数名。由程序员定义的,函数名要符合标识符的命名规则及规范

      标识符:是一个统称。变量名、函数名、标签名

      函数的命名规范:

            看到函数名就知道函数中的代码在做什么。建议函数名用一个动词。

   3)定义函数名后的小括弧是必不可少的,小括弧中的参数可以写野可以不写

   4)不要在函数名小括号后加分号

   5)函数头与函数体

      当函数被调用的时候,函数的函数体就会被调用

   6)调用函数的时候

       函数名必须要与定义的函数的名字一致

 

 6.函数的好处

   1)减少代码的冗余(一次定义,随处调用)

   2)后期的维护和修改非常方便,函数中的代码被改之后,调用函数的地方自动随着改了

   3)隐蔽代码的实现。对于调用者而言,无需关心函数的内部是如何实现的。

 

 7.函数的调试

   step over:就是将高亮选中的代码一下执行完毕,如果高亮选中的代码是在调用一个函数,这个时候就讲函数中的代码一下执行完毕

   step into:如果高亮选中的代码是在调用一个函数,这个时候就会跳到函数的内部去跟着执行

 

 

第二节 全局变量

 

 1.变量分两类

   局部变量:定义在函数内部的变量就是局部变量

   全局变量:定义在函数外部的变量,直接定义在C源文件中的变量就是全局变量

 

 2.全局变量和局部变量的区别

   1)声明局部变量的时候,如果没有初始化局部变量,那么局部变量中的值是一个垃圾值

       特别强调:不一定是0

       全局变量如果没有初始化,那么编译器会自动的将全局变量的值初始化为0

   2)作用域不同

       局部变量只能在函数内部访问,全局变量可以在该源文件中的所有函数中访问

       全局变量可以被当前源文件中的所有的函数所共享,无论在哪一个函数在访问这个全局变量,访问的都是同一个

 

 3.函数如果不被调用,那么函数中的代码是不会被执行的

 

 4.全局变量一般情况下都是定义在所有的函数前面,这样才可以被所有函数访问

 

 5.函数中的局部变量,当函数执行完毕之后,定义在函数中的局部变量酒会被回收,下次再去调用函数的时候,再次去声明

 

 6.可以在函数的内部定义一个和全局变量形同的局部变量

   在定义局部变量之前访问的是全局变量,定义之后访问的就是局部变量

 

 #include <stdio.h>

  int num;//全局变量num

 void test()

 {

   num++;

   printf("%d",num);//打印的是全局变量num的值

 }

 int main(int argc, const char * argv[]) {

 

   printf("%d",num);//打印的是全局变量num的值

   int num;

   printf("%d",num);//打印的是局部变量num的值

 

   return 0;

 }

  

第三节 带参数的函数

 

 1.一个函数实际上就是一个单独的功能

 

 2.在函数完成自己功能的时候需要由调用者传递给其一些数据,

 

 3.函数的参数

   1)定义在函数名后的小括弧中的变量就是函数参数

       参数的本质就是定义在这个函数中的局部变量,所以在函数中不能再定义一个和参数名相同的局部变量,并且在函数中可以直接使用参数的值

   2)当调用函数时,如果函数有参数,要求在调用函数的时候为函数的参数赋值

   3)调用函数的过程:

       加载函数->声明函数的参数->将实参的值赋值给形参->执行函数体

   4)形式参数:定义函数的时候,声明在函数小括弧中的参数叫形式参数,即形参。

     实际参数:调用参数的时候,为形参赋值的数据,叫实际参数,即实参

   5)为参数传值的过程,本质上是为参数赋值,把实参的值赋给形参

 

 4.参数可以实现的效果

   可以将调用者的数据传递给函数的内部让函数的内部去使用,当函数的内部需要调用者传递一些数据给函数的时候,就可以使用参数。

 

 5.什么时候函数需要带参数

   一个函数是一个独立的功能,函数在完成这个功能点时候需要一个数据,这个数据的类型确定,但是这个数据点具体的取值和来源不确定,是有调用者确定,这个时候就可以将这个数据定义为函数的参数,让调用者在调用的时候传递。

 

 6.带多个参数的函数

   函数是可以带多个参数的,将多个参数声明写在小括弧中,用逗号分开,每个参数都建议指定类型

   调用带多个参数的函数时,实参的个数必须要和形参一致,为形参赋值的时候时按顺序将一个实参赋值给一个形参,所以实际参数的顺序也要与形式参数的顺序一致;实际参数的类型要和形式参数的类型一致,如果不一致,会自己做类型转换

 

 #include <stdio.h>

  //实现的功能:求指定范围中每一个整型数的累加和

 void sum(int num1,int num2)

 {

   int sum = 0;//定义整型变量,用来求和

   for(int i = num1;i <= num2;i++)

   {

       sum += i;//累加

   }

 

   printf("和是%d\n",sum);//打印结果

 }

 

 int main(int argc, const char * argv[]) {

 

   sum(1,100);//调用函数sum

 

   return 0;

 }

 

 

第四节  return关键字和带返回值的函数

 1.return关键字

   1return关键字用在函数体中

       当在函数体中遇到return,就表示立即结束函数体的执行

   2)一般情况下,return用来提前结束函数

       如果return后面还有函数体代码,不会执行,直接结束

 

 2.函数的返回值

   当函数执行完毕后,有一个数据,这个数据函数点内部不确定如何处理,并且这个数据是调用者想要的,此时,函数就应该将这个数据返回给调用者

 

 3.函数如何将数据返回给调用者

   1)先确定要返回给调用者的数据类型

   2)修改函数的返回值类型为要返回的数据的类型

   3)在函数结束之前,使用return关键字将数据返回

 

 4.调用者如何接收函数的返回值

   定义一个和函数返回值类型相同的变量,接收就可以了

 #include <stdio.h>

 

 //实现的功能:求指定范围中每一个整型数的累加和

 int sum(int num1,int num2)

 {

   int sum = 0;//定义整型变量,用来求和

   for(int i = num1;i <= num2;i++)

   {

       sum += i;//累加

   }

 

   return sum;//sum值返回给调用者

 }

 

 int main(int argc, const char * argv[]) {

 

   int a = sum(1,100);//调用函数sum,并将sum中返回的值赋给a

   printf("累加和的两倍是%d\n",a*2);//打印返回值的2

 

   return 0;

 }

 

 5.一些细节问题

   1void代表函数执行完毕之后,没有任何数据要返回给调用者

   2)函数的返回值的类型,代表函数执行完毕之后,有一个什么类型的数据要返回给调用者

   3)一旦函数定义了返回值,则在函数结束之前,必须要返回值类型相同的数据

   4)如果返回的数据类型和函数定义的返回值类型不一致,就会先将数据做类型转换,转换后再返回

   5)一旦函数定义了返回值,则函数中的每一个分支必须要保证在结束之前都要有返回值

 

 #include <stdio.h>

 //实现的功能:判断一个数是不是偶数

 int isOuShu(int num)

 {

   if(num % 2 == 0)

   {

       return 1;

   }

   else

   {

       return 0;

   }

 }

 int main(int argc, const char * argv[]) {

 

   int i = isOuShu(6);

   printf("%d\n",i);

 

   return 0;

 }

 

 

第五节 函数的声明

 

 1.定义函数分两个步骤

   >声明函数,告诉编译器有这个函数

   >实现函数,告诉编译器这个函数的具体实现

 

 2.函数声明的语法:和函数头保持一致     void test();

   作用:告诉编译器,这个函数有

   函数的声明可以放在头部或函数内,但必须要在使用函数之前声明

 

 3.函数有声明就必须要实现

 

 4.函数的声明注意的细节

   1)如果返回值类型为int型,则这个函数可以不声明,但是建议一定要声明

   2)如果被调用的函数在主调函数之前,可以不声明

   3)如果声明函数的时候,函数有参数,参数只需要指定类型就可以了



0 0
原创粉丝点击