
一起学习C语言
文章平均质量分 93
对于一名编程人员来讲,想快速掌握好一门语言比较困难,只有多看多练,时间久了终会有所成就!
本系列文章,将带领着您翱翔C语言世界,在这浩瀚的知识海洋里,您会感受到学好一门语言应具备哪些条件。
本系列文章,我将采用全新的风格,为大家分析解C语言的不同编程领域和编写风格。
坤昱
这个作者很懒,什么都没留下…
展开
-
一起学习C语言:结构体(二)
上一篇<一起学习C语言:结构体(一)> 中,我们了解了结构体的概念与定义形式,以及结构体变量初始化赋值。本章节,我们分析结构体成员访问形式,以及结构数组使用的场景。章节预览:4. 结构成员访问5. 结构数组目录预览章节内容:4. 结构成员访问 通常情况下,结构体内的每个成员都代表着不同的含义,一般需要单独赋值或输出。如游泳比赛中选手的名称、选手的成绩,它们所定义的类型不同,赋值方式也不同。 结构成员访问形式:原创 2020-12-12 18:56:15 · 552 阅读 · 0 评论 -
一起学习C语言:结构体(一)
上一章<一起学习C语言:函数> 中,我们了解了函数的声明形式和程序的编译过程,以及函数的递归调用和函数的指针调用。本章节,我们分析结构体。章节预览:结构体1. 结构体的定义形式2. 结构变量的定义形式3. 结构变量初始化赋值目录预览章节内容:结构体 实际编程中,一些函数采用数据按组传入使用,比如整形数组对象(512位成员)作为参数传入。如果一组数据中包含不同类型的数据时,数组已不再适用,我们需要考虑其它保存方式。首先,我们了解一组数据中包含不同类原创 2020-10-24 12:07:13 · 482 阅读 · 0 评论 -
一起学习C语言:函数(一)
上一章<一起学习C语言:初谈指针> 中,我们了解了指针和进程中的内存区域,以及动态管理内存空间方式。本章节,我们分析函数的用法,以及编写不同形式的函数。章节预览:函数1. 函数的概念2. 函数定义3. 函数声明与程序编译过程目录预览章节内容:函数 在“1.6.4 main函数用法”小节中,我们了解到“C语言大部分程序由main函数主导着程序正常执行”,也可以理解为“C语言大部分程序由main函数作为程序执行入口(出口)”。但是到目前为止,我们原创 2020-07-04 22:55:29 · 2744 阅读 · 3 评论 -
一起学习C语言:初谈指针(三)
上一篇<一起学习C语言:初谈指针(二)> 中,我们了解了进程中的内存区域,以及动态管理内存空间方式。本篇文章中,我们分析更多的动态分配函数,并通过示例来了解不同场景中的动态内存的分配、使用和释放方式。章节预览:7. 常见的动态分配函数8. 本章总结目录预览章节内容:7. 常见的动态分配函数 在一些场景中,由于malloc函数分配方式较为局限性,而不能满足使用要求。接下来,我们了解更多关于内存分配的函数。realloc函数函数原型:void *原创 2020-06-07 18:22:52 · 463 阅读 · 0 评论 -
一起学习C语言:初谈指针(二)
上一篇<一起学习C语言:初谈指针(一)> 中,我们了解了指针变量的声明和初始化方式,以及指针变量的引用赋值方式。本篇文章中,我们初步分析不同的内存空间 ,并通过示例来了解动态内存的分配、使用和释放方式。章节预览:4. 首谈进程中的内存区域5. 指针变量存储字符串常量6. 如何动态分配内存空间目录预览章节内容:4. 首谈进程中的内存区域 当程序执行时,程序将会以进程的形式存在虚拟内存中,系统会为我们的进程分配不同的内存空间。我们的进程就像一个大箱子,原创 2020-05-19 01:32:00 · 548 阅读 · 0 评论 -
一起学习C语言:初谈指针(一)
上一章<一起学习C语言:数组> 中,我们了解了数组的用法和适用场景,以及不同维度数组的下标计算方式。本章节,我们初步了解指针,并通过示例分析指针、指针变量的性质。章节预览:初谈指针1. 指针的概念2. 指针变量的声明与空指针3. 指针变量的引用赋值方式目录预览章节内容:初谈指针 在前面的章节中,我们简单了解了内存空间的概念和内存地址的获取方法。在实际编程中,需要理解更多关于内存方面的知识。 本章节通过了解指针,来分析程序中不同的内存原创 2020-05-11 00:20:05 · 619 阅读 · 0 评论 -
一起学习C语言:数组(三)
上一篇 <一起学习C语言:数组(二)> 中,我们了解了二维数组语法和二维数组的应用场景。本篇文章中,我们分析更多维度数组语法,并通过三维数组示例来了解更多维数组的初始化赋值、存储方式。章节预览:7. 多维数组的用法8. 本章总结目录预览章节内容:7. 多维数组的用法 当二维数组不能表达实际需求时,可以构建更多维数的数组使用。比如三维数组...原创 2020-05-04 15:36:21 · 611 阅读 · 0 评论 -
一起学习C语言:数组(二)
上一篇 <一起学习C语言:数组(一)> 中,我们了解了一维数组语法和一维字符数组的应用场景。本篇文章中,我们分析二维数组语法,并通过二维数组示例来了解二维数组的初始化赋值、存储方式。章节预览:4. 二维数组的声明5. 二维数组的初始化赋值6. 二维整数类型数组使用目录预览章节内容:4. 二维数组的声明 二维数组属于一个具有固定大小,...原创 2020-04-18 21:14:19 · 487 阅读 · 0 评论 -
一起学习C语言:数组(一)
上一章 <一起学习C语言:C语言循环结构> 系列内容中,我们了解了循环结构的用法和适用场景,以及循环结构结合continue语句、break语句的处理方式。本章节,我们学习数组用法。章节预览:数组1. 一维数组的声明2. 一维数组的初始化赋值与使用3. 一维字符类型数组使用目录预览章节内容:数组 在C语言中,某一数据类型拥有多个必...原创 2020-04-05 18:29:45 · 572 阅读 · 0 评论 -
一起学习C语言:C语言循环结构(三)
上一篇 <一起学习C语言:C语言循环结构(二)> 中,我们了解了while、do…while语法和continue语句的应用场景。本篇文章中,我们分析循环结构嵌套使用,并通过几个示例分析continue和break语句的结合用法。章节预览:3. continue和break应用场景4. 循环结构嵌套4.1 循环结构嵌套用法5. 本章总结目录预览章节内容:...原创 2020-03-22 18:00:23 · 794 阅读 · 0 评论 -
一起学习C语言:C语言循环结构(二)
前言: 前一段时间发表的<【“天才”必经之路】>文章非常热门,虽然我知道它会是一篇成功的文章,但,它的火爆程度还是超出了我的预期。前几日,我写了这个系列的第二篇文章,文章中的故事场景和语法也更加细腻,更能突出主题,但,这也是我删除它的原因。这篇文章写得过于理想化,可能会导致读者朋友无法合理安排时间,比如无法做到“劳逸结合”。我们的生活虽然需要努力,但也要合理休息,调整身...原创 2020-03-14 16:37:42 · 841 阅读 · 0 评论 -
一起学习C语言:C语言循环结构(一)
上一章 <一起学习C语言:C语言基本语法> 系列内容中,我们了解了if语句、switch语句的使用方式以及不同运算符的优先级等内容。本章节,我们学习C语言循环结构用法。章节预览:1. C语言循环结构1.1 什么是循环结构1.2 for语句1.3 for语句分析1.4 for语句用法目录预览章节内容:1. C语言循环结构 经过前几...原创 2020-03-08 21:29:38 · 1296 阅读 · 0 评论 -
一起学习C语言:C语言基本语法(五)
上一篇 <一起学习C语言:C语言基本语法(四)> 中,我们了解了位运算符的语法和不同的应用场景中的选择。本篇文章中,我们分析switch语句,并通过几个示例分析break、#define和三目运算符的应用场景。章节预览:5. switch语句5.1 break用法5.2 switch语句分析5.3 #define用法5.4 switch语句用法6. 三目...原创 2020-02-29 20:41:24 · 1378 阅读 · 0 评论 -
一起学习C语言:C语言基本语法(四)
上一篇 <一起学习C语言:C语言基本语法(三)> 中,我们了解了关系运算符的语法和不同的应用场景中的选择。本篇文章中,我们分析位运算符的用法,并通过几个示例分析不同的位运算符的运算方式和负数位移的保护方式。章节预览:4. 位运算符4.1 位运算符用法4.1.1 按位与运算4.1.2 按位或运算4.1.3 按位取反运算4.1.4 按位异或4.1.5 按...原创 2020-02-22 20:08:30 · 867 阅读 · 0 评论 -
一起学习C语言:C语言基本语法(三)
关于<一起学习C语言:XXXX>系列文章的相关问题,作者在这里解答一下疑惑: 本系列文章适合哪些朋友阅读? 回答:<一起学习C语言:XXXX>系列文章属于作者正在编写的书籍内容,它的设计非常广泛,从新手入门到中级进阶和高级理解。文章采用从浅入深,由易到...原创 2020-02-17 17:02:37 · 2218 阅读 · 0 评论 -
一起学习C语言:C语言基本语法(二)
上一篇 <一起学习C语言:C语言基本语法(一)> 中,我们了解if语句的语法和不同的应用场景,以及语句块的使用方式。本篇文章中,我们分析逻辑运算符的用法,并通过几个示例分析逻辑运算符之间的执行顺序。章节预览:2. 逻辑运算符2.1 逻辑运算符用法2.2 布尔型变量2.3 逻辑表达式2.4 逻辑运算符的优先级目录预览章节内容:2. 逻辑运算符&n...原创 2020-02-15 18:36:42 · 2875 阅读 · 3 评论 -
一起学习C语言:C语言基本语法(一)
上一章 <一起学习C语言:C语言数据类型> 系列内容中,我们了解了整数类型、字符类型和浮点数类型的使用方法以及二进制到八进制、十进制和十六进制的转换方式。本章节,我们学习C语言基本语句用法,以及常用的运算符号。章节预览:C语言基本语法1. if语句1.1 if语句用法1.2 if语句分析目录预览章节内容:C语言基本语法 做任何事情都...原创 2020-02-15 12:58:53 · 1430 阅读 · 0 评论 -
一起学习C语言:C语言数据类型(三)
上一篇<一起学习C语言:C语言数据类型(二)>中,我们了解了整形和字符类型的定义,以及二进制到八进制、十进制和十六进制转换方式。本篇文章中,我们进行分析浮点数的运算,并通过二进制、十进制和十六进制表达浮点数值。章节预览:1.4 浮点数类型1.4.1 浮点数的表示方法1.4.2 单精度浮点数类型1.4.3 关于浮点数精度问题1.4.4 实数转换到单精度浮点数...原创 2020-02-15 21:18:47 · 4331 阅读 · 2 评论 -
一起学习C语言:C语言数据类型(一)
上一章 <一起学习C语言:初步进入编程世界> 系列内容,我们讲述了如何搭建编译环境以及动态输入方式打印出整数运算结果,并留下几道练习题。本章节,我们学习C语言数据类型,了解类型的同时并学习二进制数字转换为八进制、十进制和十六进制等内容。章节预览:C语言数据类型1. 数据类型1.1 位与字节1.2 整数类型1.2.1 短整型上一章内容:正文:C语...原创 2020-02-15 21:20:35 · 1083 阅读 · 0 评论 -
一起学习C语言:初步进入编程世界(三)
上一篇<一起学习C语言:初步进入编程世界(二)>中,我们了解了C语言的加法运算方式和赋值运算符的用法,并通过printf函数成功输出计算结果。私下我们可以参考赋值运算表,练习更多的运算符用法,做到真正意义上的举一反三。 本章节,我们学习动态输入数字,结合上一篇内容完成连贯的编写操作!3. 动态输入数字3.1 变量内存地址和变量值 当程序...原创 2020-01-16 19:07:12 · 752 阅读 · 0 评论 -
一起学习C语言:初步进入编程世界(二)
前言 非常感谢这段时间里大家给予的支持与帮助,在以后的日子里,我会更加努力,与大家一起共同进步! 从本篇开始,作者与大家一起学习、分析C语言语法以及经典示例!正文 到目前为止,我们虽然成功编译并执行了第一个程序,但是,还没有理解代码的含义。从本章节起,我们进入“认知”阶段,通过一些简单示例来了解C语言基本编写方式。 本章先从简单的加法运算...原创 2020-01-11 01:34:47 · 897 阅读 · 0 评论 -
一起学习C语言:初步进入编程世界(一)
上一篇<一起学习C语言:C语言发展历程以及定制学习计划>中,我们了解了C语言发展历程和C语言适用场景,作者本人按照自己的亲身经历抒写了一种高效的学习方式以及学习目标。从本篇起,作者将从搭建编译环境开始,与大家一起进入编程世界!1. Windows系统编译环境搭建 作者在Windows系统开发程序时,比较常用的集成开发环境是Visual Studio系列,本...原创 2020-01-01 23:11:09 · 1026 阅读 · 3 评论 -
一起学习C语言:C语言发展历程以及定制学习计划
如何才能学好一门语言? 这个问题始终伴随着不同的答案。从本篇开始,作者定期发布<一起学习C语言>系列文章,本系列文章指引着您翱翔C语言世界,在这浩瀚的知识海洋里,您将会感受到学好一门语言应具备哪些条件。前言初接触编程那会儿,编程世界充满了神秘感觉,对于我来说是那么的遥不可及。也许您会问,为什么这么说呢?由我慢慢道来…学生时期,我比较痴迷于游戏,导致各项成绩都不太好,痴迷到什么程...原创 2019-12-23 17:04:43 · 1550 阅读 · 0 评论 -
C语言实现内存池
之前编写数据管理结构时用到内存池,在写过的内存管理结构(内存管理结构)的基础上进行重新设计,使其达到内存释放"0碎片"、一体化管理。目前内存池拥有以下功能:1.自适应分配超过默认内存池大小的单个内存池(单个内存池默认大小为100M,可以通过修改宏定义或调用修改函数指定新的内存池大小;单个内存池最大内存分配与编译器分配相同,MFC32位工程最大分配在1G左右);2.每个内存池都有自己的内存池描...原创 2018-09-25 23:32:20 · 2018 阅读 · 0 评论 -
C语言实现XML生成解析库(XML扩展)
放假期间在家有点无聊,前一段时间对XML的生成、解析比较感兴趣,便根据自己对XML的理解结合链表实现一个XML的制作与解析的结构。设计采用了固定格式头信息加自定义头信息: 《?xml version=”xml” encoding=”Utf-8”? 》这段数据属于固定格式头信息,里面的”xml”和”Utf-8”可以通过库函数进行修改; 《?567?》这段数据属于自定义头信息,可以自由增加;原创 2017-10-04 21:38:24 · 2611 阅读 · 0 评论 -
字符串转换到double数组
最近写了一个小工具需要从文件中读出数字以double类型显示并计算(文件中包含空格换行逗号作为完整数字标记 ,并且运行负数),由于需要从读取到的字符串中截取数字稍微麻烦,便动手封装个方法截取转换一次完成。设计函数的过程中也遇到一些小问题,比如整数部分和小数部分的计算方式不一样,只能通过分开计算然后相加完成转换, 整数部分需要乘以10相加 ,小数部分需要除以10相加 ,并且小数部分遇到0不相加选择跳原创 2017-07-15 12:31:37 · 6141 阅读 · 0 评论 -
auto形式(更多功能)类结构实现
最近思来索去~一直都是写模板做数据结构还没有真正意义上的可以储存任意数据类型的结构,使用auto还需要先初始化类型,便着手自己实现了一个支持储存所有数据类型(包括自己创建的类或者结构体)。设计初衷打算仿auto形式(传入什么类型便使用什么类型),这么做确实比较简单点但实用性不强。后来考虑可以参考CString增加Format格式化输入字符串和任意类型转换(当然不包括自己创建的类,因为不是一种形式),原创 2020-02-15 12:56:07 · 1575 阅读 · 0 评论 -
字符串Ascll格式转16进制
之前做过一些项目需要用到ASCLL码转换到16进制,在网上搜索后发现,大部分都是10进制数字转16进制数据,这对于8位字符类型unsignal char (这里不用char,因为char是-127到128,对于129-255之间的数溢出变为负数,算起来稍微麻烦 ,采用unsignal char是因为它的值在0到255) 来讲他可以接收最大为255的数字(从Ascll码左边可以看到数字),原创 2017-03-27 22:00:46 · 4832 阅读 · 0 评论 -
字符串16进制数字转换到Ascll字符串
16进制数字转换到Ascll的原理也比较简单,由于unsignal char是8位数据 (这里用unsignal char的原因是表示的数字大小为0-255,用16进制数字FF表示) 可以包含2位16进制数据,所以由2个16进制数字char转换为一个Ascll unsignal char;函数定义如下:int HexToChar(unsigned char* dst,const void原创 2017-03-27 23:03:55 · 4934 阅读 · 0 评论 -
二进制字符串转换到Ascll字符串
之前有个朋友问我如何使用二进制文件转换为Ascll格式文件,随在整理文件的时候写了一个二进制字符串转换到Ascll字符串的简单转换方式。函数定义如下:int BinaryToAscll(unsigned char* dst,const void* src,int low,int len);代码实现如下://第一个参数表示输出转换Ascll字符串 空间大小为src的8分之一//第二个参数表示输入字符原创 2017-03-27 23:24:03 · 2927 阅读 · 0 评论 -
Ascll字符串转换到二进制字符串
上一章说到二进制字符串转换到Ascll字符串的方法,本章按照同样的原理来说下Ascll字符串转换到二进制字符串的方法。函数定义如下:int AscllToBinary(char* dst,const void* src,int low,int len);代码实现如下://第一个参数表示输出转换二进制字符串 空间大小为len长度的8倍//第二个参数表示输入字符串(Ascll)//第三个参数表示是否原创 2017-03-27 23:40:38 · 4630 阅读 · 1 评论 -
C语言 strsep函数实现
strsep()函数属于字符串处理函数,作用是使用关键字符(可以是一个,也可以是一个字符串)在一块完整的字符串内存中递增顺序查找,如果在这块字符串内存中查找到关键字符其中的一个那么在当前字符串的位置设为0并且返回下一个字符的地址(在查找到的地址加一个字节),如果没有查找到关键字符返回0。函数定义如下:char *strsep(char **s, const char *ct);代码实现如下:char原创 2017-03-17 23:21:41 · 5620 阅读 · 0 评论 -
C语言 strspn函数实现
strspn()函数从名称上来讲属于字符串查找,但实际应用中发现strspn()函数用来在一个字符串中从首地址开始向后递增排查”添加的参数”在这个字符串的范围是多少个字节。函数定义如下:size_t strspn(const char *s, const char *accept);代码实现如下:size_t Test_strspn(const char *s, const char *accept原创 2017-03-16 21:28:42 · 2543 阅读 · 0 评论 -
C语言 strcspn函数实现
strcspn()函数命名与strspn()函数及其相似,那么作用又有什么样的差别那?··· 经过测试strcspn()函数与strspn()函数用法完全相反,strcspn()函数是在一个字符串中从首地址开始向后递增一直遇到”添加的参数“停止。函数定义如下:size_t strcspn(const char *s, const char *reject);代码实现如下:size_t Test原创 2017-03-16 21:58:38 · 1340 阅读 · 0 评论 -
C语言 memcpy函数(增加dst 从第一字节拷贝判断)的内部简单实现方式
刚学习C语言编程的时候,感觉C内部函数深不可测,通过代码很难实现。后来经常慢慢的学习过程,理解了部分C函数的实现方法,下面简单说下memcpy函数的内部实现方式之一。简单概括内存拷贝的含义:字节对齐字节进行赋值(比如单个字节对齐单个字节,四个字节对齐四个字节)。void* MemCpy(void* dest,const void* src,int size)//拷贝函数{ if (NULL原创 2017-01-02 01:07:29 · 1819 阅读 · 0 评论 -
C语言 memset函数简单实现
数组对象初始化时,使用memset函数非常方便。对于CString却是个坏方法,会释放掉CString内部分配的内存,并且导致其指针对象变成野指针。 下面贴上memset函数实现方法:void* MemSet(void* dst,int val,int size){ char *_dst = (char*)dst; assert ('\0' != *_dst);//dst数据原创 2017-01-02 15:36:23 · 3046 阅读 · 0 评论 -
C语言 atoi函数简单实现
有时候需要字符串转换到int类型,使用atoi函数可以轻松完成类型转换。 下面贴上atoi函数实现方法:int Atoi(const char* src){ assert(NULL != src);//思索了好久,第一位为0允许,遂判读地址不为空 int _num = 0; int _sign = 0; while ('0' == *src ||' ' ==原创 2017-01-02 16:35:11 · 3450 阅读 · 0 评论 -
C语言 itoa函数简单实现
函数传参有时候会用到int类型转换为字符串,使用itoa函数完成转换类型的基础上,还可以指定转换进制类型(比如16进制,10进制,8进制或者2进制)。下面贴上itoa函数实现方法:char* Itoa(int val,char* dst,int radix = 10);//定义的时候默认指定10进制char* Itoa(int val,char* dst,int radix){ char原创 2017-01-02 18:14:45 · 6342 阅读 · 0 评论 -
C语言 printf函数实现
printf()是控制台程序中最常用的函数,作用是输入的字符、数字等信息拼成完整的句子并且输出到标准输出设备(显示器、控制台等)。 下面是printf()定义:int printf(const char *fmt, ...)printf()实现部分:int Test_printf(const char *fmt, ...){ //定义接收输出信息最大长度1024字节 char原创 2017-02-21 22:51:31 · 5708 阅读 · 0 评论 -
C语言 sprintf实现
我们已经知道printf()是控制台程序中最常用的函数,作用是输入的字符、数字等信息拼成完整的句子并且输出到标准输出设备(显示器、控制台等),sprintf()函数命名与printf()函数及其相似又有什么作用呢?··· 其实sprintf()作用也是输入的字符、数字等信息拼成完整的句子,只不过是输出在第一个参数中(char* 类型)。下面是sprintf()定义:int sprintf(ch原创 2017-03-10 00:24:55 · 11283 阅读 · 1 评论