从入门到放弃C语言-瞎倒腾(2)

2023-11-11 06:58
文章标签 语言 入门 放弃 倒腾

本文主要是介绍从入门到放弃C语言-瞎倒腾(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

请扫码加公众号,周三周六定时更新大笑


       上一次简单的介绍了一下C语言的代码结构,总结一下可以说C语言主要由库包含,main函数以及在函数中的语句组成。

       一个源代码文件仅仅由库包含和main函数组成是最简单的结构了,为了实现更加复杂的功能,我们需要往这个结构中加入新的东西。

 

       增加新的东西自然是为了增加代码的功能,把所有的功能都放入main自然也是一种方法。

       但是,不够优雅,不够装逼。

      比如

       intmain()

       {

              aLotOfStatement    //nice! have done some fantastic work

             

              aLotOfStatement     // just so so

 

 

              aLotOfStatement        //wtf, what am I writing

 

 

              aLotOfStatement     // I want to kill myself……..

}

 

       其实,生活不仅有眼前的装逼,还有你写完几百行以后的……

       如果你当真把几百行全部写在了main函数,刚开始你和别人都能看得懂你的代码。慢慢得,看得懂的只有你和上帝。到了最后,看得懂你代码的,大概只有上帝了……

 

       这时候,我们迫切需要一种能够让你优雅装逼的利器来解决这种问题,嗯,虽然不是老司机,我推荐使用函数(function)。

       函数呢,体现的是自顶向下设计思路,这个东西在面相过程编程中是极其重要的,日后详细讨论函数的时候在说。

 

       简单来说呢,我们写函数的目的就是把main函数那么多的语句通过拆分,形成多个独立的功能个体,来完成一些小任务。当程序进入内存以后,从main函数开始执行,main函数不断调用别的函数来完成一些任务,并通过返回值来存储关键数据用于接下来的计算。

 

 

       废话不多说,看一下如何编写函数。

 

       下面的小程序完成小学的加法和乘法。

      

       #include<stdio.h>

       #include<stdlib.h>

 

       int  add(int a,int b);

       intmul(int a,int b);

 

       intmain()

       {

              intc,d,e,f;

              c=1;d=2;

 

              e=add(c,d);

              f=mul(c,d);

       }

      

       intadd(int a,int b)

       {

              returna+b;

       }

 

       intmul(int a,int b)

       {

              returna*b;

       }

 

执行完程序后,e=1+2=3,f=1*2=2

 

在上面的程序中,库包含以后跟着的两句叫做函数原型。(  int add(int a,int b);  )。

普遍的语法结构是这样的(按照英文翻译理解)

returnType    functionNmae(argumentTypeargument1, ……… argumentType arumentn);

函数原型呢也可以叫函数签名(function signature)。它呢,并没有说明这个函数是干嘛的,只是说程序中有个函数是functionName,有一天她会披着金甲圣衣,驾着七彩,,,,,

 

不不不。只是说程序中有个函数,叫functionName,它会完成一定的功能。当然呢,只是说说将会有这个函数。

 

 

在main函数以后跟着的其实就是前面两个函数签名所说的函数。

在我们把它能实现的功能放在了花括号中间,然后函数签名所指的函数也就有了真正实体。

这个能够完成某一功能的实体叫做函数定义。

当有了函数定义后,一个函数的创建工作也就在代码中完成了。

 

当有了一个个自己定义的函数以后,程序的功能会大大的增强,更好的是,main函数要做的事情被各个函数给分配走了,main函数的代码长度会大大减少,这样也就能够在编写代码的时候能够优雅的装逼了,因为功能被分散的以后,程序哪里出问题了就直接修改相关函数即可,而并不需要在整个main函数里面找我错哪里了,我究竟错哪里了!!

这样,也就能够优雅的装逼啦。

 

最后提一下,前面的代码结构中,我们把的结构是

 

#include <***>  //库包含

 

//函数签名

 

int main()

{

}   //main函数

 

//各种函数定义

 

int aFuntion()

{

}

…….

 

其实,还有一种结构是这样的

 

#include<****>//库包含

 

//各种函数定义

 

int aFunction()

{}

int bFuntion()

{}

 

//main函数

int main()

{

}

这一种结构与前面的差别在于函数签名没了,我见过很多人这样编写程序,说实话,我推荐前面一种,因为如果要了解一个程序必定是从main开始来自上向下了解的,把main函数放在前面能够直接体现程序的功能,自定义函数放在main后面更体现了他们辅助main完成功能的地位。


这篇关于从入门到放弃C语言-瞎倒腾(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时