文章源自:博客园丨 Charmchin
C 语言程序设计被视为结构化程序设计的典范,其核心思想在于采用自顶向下、逐步分解以及模块化的程序设计策略,通过运用顺序、选择和循环这三种基本控制结构来构建程序。
世间万物都具有双重性,C 语言虽然具备简洁性、灵活性和高效性等显著优势,但也存在潜在问题,例如若标识命名不当、代码布局不规范,或者不当使用野指针、导致内存泄漏等情况,都可能使其原本的优点转化为严重的缺陷。
我们日常接触的操作系统、数据库系统、游戏引擎等许多核心系统,大多都是基于C 语言开发的,同时还有大量经典算法和框架也是使用C 语言构建的。此外,随着“物联网”时代的到来,嵌入式开发的应用范围日益广泛,掌握C 语言也为嵌入式开发奠定了坚实的基础。更重要的是,只有当我们深入理解了C 语言所代表的面向过程的程序设计思想后,再学习Java等其他基于面向对象理念的语言时,我们才能更深刻地领会其精髓。
C 语言包含了丰富的数据类型,在此建议首先从最基础的三类数据类型入手:即整型、实型和字符型。
从命名上我们就能看出这三者之间的互斥性。“常”字意味着恒定不变,因此C 语言中保持值不变的量被称为常量,而值可以发生变化的量则被称为变量。
常见的「常量」包括:整型常量、实型常量、字符常量、字符串常量等;而「变量」与常量除了值是否可变这一根本区别外,在表现形式上也有所不同。常量通常以值的形式直接存在,而变量则类似于一个“容器”。不同类型的变量就像不同容积的“容器”,能够容纳不同类型和大小的数据。
所谓运算符,自然是指能够执行各种运算操作的符号集合。就像小学阶段学习到的“+、-、×、÷”四则运算符一样。C 语言中包含了大量运算符,这些运算符根据所需操作数的数量可以分为一目、二目和三目运算符。例如,赋值运算符需要左右两个操作数,因此属于二目运算符;而用作表示数值正负的正号运算符“+”和负号运算符“–”,由于只需要一个操作数,所以它们属于一目运算符!至于三目运算符,则需要三个操作数,这种运算符在C 语言中极为罕见,因此值得我们特别关注。
不过在此需要特别提醒,C 语言中的所有运算符都必须使用英文字符表示,绝对不能使用中文的标点符号(这是初学者经常犯的错误)。
那么这个运算符是如何使用呢?简单来说,就是根据操作数1 的真假条件,来决定结果是操作数2 还是操作数3,二者必选其一。例如:
一个优秀的程序应当能够将运行状态和执行结果以信息的形式呈现给用户,甚至在某些情况下需要获取用户的特定信息,这种与程序进行交互的行为就称为交互。
我们将程序获取用户信息的过程称为程序的输入,将信息展示给用户的过程称为程序的输出,具备这种功能的函数就被称为I/O函数(Input/Output),即输入/输出函数。如果这些I/O操作是通过控制台窗口完成的,那么就称为标准I/O函数。C 语言中提供了多种标准I/O函数,其中最常用且功能最强大的当属printf函数和scanf函数。
大家是否记得这样一个经典的小品呢?它涉及一个脑筋急转弯,其中宋丹丹问赵本山:“把大象装进冰箱需要几步?”。赵本山一时语塞,答不上来,宋丹丹笑着回答:“只需要3 步:第一步打开冰箱门,第二步把大象装进去,第三步把冰箱门关上。” 引得观众哄堂大笑····
为了简化说明,下面将通过简单的实例来演示三种基本结构:顺序结构、分支结构和循环结构。
顺序结构是最基础的一种流程结构,它采用自上而下的方式逐条执行语句。例如:
C 语言的分支结构能够控制程序的部分流程是否被执行,或者从多条执行路径中选择一条来执行。
我们还可以使用另一种分支语句(switch…case) 来实现:
循环结构在实际应用中非常普遍,下面列举几种常见的循环结构样式:
就像玩积木一样,一座宏伟的城堡是由许多块不同的小积木搭建而成的,一个大型程序也是由若干个小的子程序构成的,这种将大问题分解为小问题的程序设计方法就是模块化,而每一个模块就是我们这里所说的核心—— 函数。
与变量在使用前需要定义一样,函数在调用之前也需要先定义。函数的定义格式如下:
关于自定义函数的两个关键点需要注意:
在C 语言中,函数是不允许嵌套定义的,也就是说不能在一个函数内部定义另一个函数,所有函数都是平等且独立的。但是,一个函数中可以调用其他函数。
从函数的编写者角度来看,可以将函数分为库函数和自定义函数;从是否有返回值的角度,可以分为有返回值函数和无返回值函数;而从函数是否有参数的角度,还可以将函数分为有参函数和无参函数。
以上介绍的都是一些基础概念,它们的主要作用是提醒大家回顾相关内容。由于篇幅限制,这里不再提供具体的实例进行分析~~~
递归调用的原理非常简单,就是函数的自我调用。它实际上是一种特殊的函数嵌套调用。为了防止死递归的发生,需要有效地控制递归调用,而实现这一点的关键在于使用return语句来终止递归调用。
那么,下面我们尝试自己编写一个递归函数来实现求和功能。
对于求幂、平方根、三角函数等操作,我们可以调用C 语言的数学库函数来完成,只需包含”math.h”这个头文件,就可以使用这些与数学相关的函数。类似的还有”时间函数”、”随机数函数”、”字符处理函数”(包含”ctype.h”头文件)等等。
C 标准库中包含了数百个函数,更多函数需要我们在编程过程中不断学习和探索。毕竟库函数都是经验丰富的开发者智慧的结晶,经过反复锤炼,熟悉并掌握它们,我们一定会大有裨益的 ~ ~
持续分享中······
写在最后:对于准备学习C/C++编程的朋友们,如果你希望提升你的编程核心能力(内功),不妨从现在就开始学习!
编程学习书籍推荐:
编程学习视频推荐:
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己摸索更快哦!