关于时空复杂度的分析,是每一个程序员的必备技能,本文将带你了解什么是时空复杂度?熟知怎样去计算一个算法的`时间复杂度`和`空间复杂度`
上篇文章介绍了一个程序运行的 编译与链接,其中编译阶段有个预处理,他会对一些预处理指令进行处理,本章就对这些预处理相关的指令,操作符等等进行探讨
每当我们运行一段代码时,编译器都会自动的帮我们编译代码并将代码转换为一个二进制可执行文件(`.exe`), 有了这个可执行文件,便可以执行我们写的程序了。那么编译器对代码的编译以及生成可执行程序的过程是怎样的呢?这个问题便是本文章将要探讨的。
我们有可能会写通讯录,写过通讯录的都知道,如果没有文件操作,程序运行后输入的数据在程序结束就没有了,联系人信息也就没有了,如果不能存放联系人的信息,那通讯录还有什么用?所以必然的我们需要文件操作来将输入的联系人的信息存放到文件当中,下一次运行时再将之前已经保存在文件中的联系人的信息拿出来,这一系列的操作就是C语言的文件操作,对应的就需要使用一些相关操作函数。简单来说,文件操作能够将输入的通讯录的数据存放在硬盘文件中,这样就做到了数据的持久化。
也许你从来就没有听过`柔性数组(flexible array)这个概念,但他是真的存在;柔性数组的概念存在于C99标准当中,C99标准表示:结构体的最后一个成员可以是一个大小不确定的数组,这个数组就叫做柔性数组;既然搭配了`柔性`这一修饰词,那么这个数组就不会是”耿直“的了。
对于`atoi`函数大家可能会有些陌生,不过当你选择并阅读到这里时,请往下阅读,我相信你能对`atoi`函数熟悉
动态内存管理函数可以说很好用,但是有些小危险所谓动态内存分配,就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。 动态内存分配不像 数组 等 静态内存 分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。
联合体(`union`)在C语言中是不常用的,不过存在就必然有其有用之处,这里不深入探讨联合体用在何处有什么用,本文章只介绍关于`union`的基本知识。
枚举在我们平时练习或学习的时候可能不是很常用,但是其在工程项目里,还是比较常见的,因为他能起到优化用。并且,有时我们在写题的时候,也会运用到枚举的思想。
C语言中结构体是一种用户自定义的数据类型,它相当于一个小型的数据结构,当我们在学数据结构阶段的时候,结构体的运用很常见,所以,基本的结构体的定义和使用,以及结构体大小的计算务必掌握。
内存函数的使用广泛度大于常用字符串函数的使用广泛度,因为字符串函数只适用于与字符相关的,而内存函数适用于各个类型,因为他是从内存出发,对内存进行修改,因此,学会内存函数,可谓收获满满呀。
常见的字符串函数在一定程度上可以让我们在写代码,或者是在刷某些有关字符串的题目时事半功倍,并且常见字符串函数的功能非常常用,因此我们应该熟练使用这些字符串函数,以及部分函数要能自我实现。
虽然数据在内存中的存储这一节知识不常用,但是他能让我们更深刻的理解内存和更严谨的写代码,可以说是一个程序员的必不可少基本功。
本章知识点:指针数组,数组指针,函数指针,回调函数,函数指针数组......
调试(英语:Debugging / Debug),又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。我们在写完程序后,时常会因为达不到预期效果而苦闷,可以说,代码出现了bug,那么我们如何去寻找程序的错误?调试是一个简单但又非常重要的技巧,有人说,程序员写代码只要20%的时间,而调试除错占用了80%的时间。这句话非常的形象。可以说调试就是一个尝试破案的过程,它能够找到导致程序运行效果不佳的错误。
紧跟上一章,这一章的指针相对较难一些,不过经过本章的学习,相信大家能够有所得。
C语言中指针可以说是最接近计算机的一种表达方式了,他是C语言中最难也最重要的一块,这就需要我们细心去学去体会指针的每一步效果,相信大家刚学指针时会有些许困惑,本章我们就来看看指针的初阶把。
我们在学习C语言时肯定会用到不同的操作符来完成我们的功能,本章便是这些操作符的介绍与具体使用。
数组是由数据类型相同的一系列元素组成的。需要使用数组时,通过声明数组告诉编译器数组中内含多少元素和这些元素的类型。编译器根据这些信息正确的创建数组。普通变量可以使用的类型,数组元素都可以使用。
本章我们用C语言简单实现一个9×9雷阵的扫雷小游戏。说到扫雷想必大家都不陌生,开始我们点击一个小方块,那么这个小方块上会显示它周围八个小方块里雷的个数,凭借这个数值,在判断下一个要扫的位置(当然可能前面两步需要我们的幸运成分了),当我们除雷外的所有小方块都已经显示完了,那么扫雷成功。
本章我们用C语言来实现一个初级的三子棋小游戏,三子棋想必大家都玩过,只要每一行或每一列或对角线三个棋相同,那么便获得胜利,由此我们分析下棋的步骤与获胜判断,来构建一个C语言三子棋的代码框架。
分支和循环在C语言中几乎无处不在,作为重要的一部分,精确掌握其语法和运用逻辑,是继续向下学习的“地基”。
本章是关于C语言函数的讲解,对初学C语言的小伙伴很有帮助噢~
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号