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

2024-09-02 12:08

本文主要是介绍iOS笔记:第五篇 C语言 函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


 第一节 函数

 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)如果声明函数的时候,函数有参数,参数只需要指定类型就可以了



这篇关于iOS笔记:第五篇 C语言 函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129912

相关文章

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更