C语言教程
C语言教程。
C语言技术网-码农有道
二十二年的C/C++语言开发经验,擅长C/C++语言在数据处理和网络通信方面的应用,freecplus开源框架作者。
freecplus框架是UNIX平台下C/C++程序开发的业务层基础框架,由C语言技术网组织开发、维护。其目的是为C/C++程序员供免费的、开源的程序库。freecplus框架与C++标准库结合使用,可以极大的提高程序员的开发效率。
freecplus框架的初衷是为C/C++程序员提供功能强大、简单易用的函数和类,把程序员从纷繁复杂的C/C++底层代码中解放出来,程序员将更关注软件功能和业务逻辑的实现。
展开
-
C语言程序的基本结构
文章目录一、C语言基础知识的学习方法二、C语言程序开发的流程三、安装C语言的编译器四、C程序的基本结构1、程序的注释2、预处理指令3、主函数的入口4、主函数体五、编译并执行 C 程序六、知识总结七、课后作业八、版权声明一、C语言基础知识的学习方法1)我的课程内容是精心整理的,某些知识点可能没有提到应用场景,但绝对不会是没用的知识。课程中没有提到的知识可以了解一下,但不必深入学习,意义不大。2...原创 2020-03-30 18:35:34 · 1587 阅读 · 0 评论 -
C语言数据类型
文章目录一、基本类型1、字符型(char)2、整型(int)3、浮点型(float)二、字符串三、构造类型四、指针类型五、其它数据类型六、版权声明一、基本类型C语言的基本数据类型包括字符型、整数型、浮点型。1、字符型(char)描述单个字符(一个字节),用半角的单引号包含起来,如’a’、‘A’、‘1’、’$'等,键盘能输入的英文和半角的符号都是字符。'A' 'B' 'C' ......原创 2020-03-30 18:31:34 · 791 阅读 · 0 评论 -
C语言常量、变量和关键字
文章目录一、一切都是数据1、静态数据2、动态数据(临时数据)二、常量三、变量1、整数型、字符型、浮点型变量2、字符串变量3、变量的命名四、C语言的关键字五、变量的初始化1、整数型、字符型、浮点型变量初始化2、字符串变量的初始化六、变量的赋值七、多变量操作1、多个变量的定义2、多个变量的赋值八、const约束九、课后作业十、版权声明一、一切都是数据对计算机来说,图片、文字、音乐、视频等一切都是数...原创 2020-03-30 18:24:46 · 931 阅读 · 0 评论 -
C语言输入和输出
文章目录一、数据输入二、数据输出三、断章取义四、printf输出1、输出描述性的文字2、输出整数3、输出字符4、输出浮点数5、输出字符串6、输出多个内容7、示例(book12.c)五、scanf输入1、输入整数2、输入字符3、输入浮点数4、输入字符串5、输入多个内容6、示例(book13.c)六、注意事项七、课后作业八、版权声明一、数据输入编写程序的主要目的就是为了处理数据。数据从哪里来?数据...原创 2020-03-30 18:22:09 · 2479 阅读 · 0 评论 -
C语言运算符
文章目录一、C语言的运算符二、算术运算符三、赋值运算符四、sizeof运算符五、运算符的优先级六、版权声明一、C语言的运算符C语言有六种运算符,如下:1)算术运算符;2)赋值运算符;3)sizeof运算符;4)关系运算符;5)逻辑运算符;6)位运算符。本章将只介绍算术运算符、赋值运算符和sizeof运算符,关系运算符和逻辑运算符放在其它章节中介绍,位运算符极少使用,了解即可,不深...原创 2020-03-30 17:12:01 · 487 阅读 · 0 评论 -
C语言if分支结构
文章目录一、关系运算符二、条件判断三、只使用if语句四、多个if else语句五、if语句的嵌套六、保持良好的编程习惯七、逻辑运算符八、逻辑表达式的书写九、不得不说的逻辑非十、三目运算符十一、课后作业十二、版权声明一、关系运算符在讲if条件分支结构之前,先了解关系运算(RelationalOperators),用于判断条件,决定程序的流程。关系数学中的表示C语言的表示...原创 2020-03-30 16:57:34 · 2181 阅读 · 0 评论 -
C语言switch分支结构
文章目录一、if else的不足二、switch语句三、注意事项四、课后作业五、版权声明一、if else的不足C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else处理会不太方便,而且容易出现 if else配对出错的情况。例如,输入一个整数,输出该整数对应的星期几的中文表示。 if (day == 0) printf("星期天\n"); ...原创 2020-03-30 16:49:09 · 628 阅读 · 0 评论 -
C语言循环
文章目录一、程序结构二、while循环三、do while循环四、循环的跳转五、while循环的应用六、for循环七、for循环嵌套八、循环的选择九、死循环十、应用技巧十一、课后作业十二、版权声明一、程序结构在C语言程序中,一共有三种程序结构:顺序结构、选择结构(if和switch分支结构)、循环结构;1)顺序结构从头到尾一句接着一句的执行下去,直到执行完最后一句;2)选择结构执行到某...原创 2020-03-30 16:37:43 · 924 阅读 · 1 评论 -
C语言数组
文章目录一、数组二、占用内存的大小三、数组的初始化四、注意事项五、在for循环中数组六、二维数组七、多维数组八、字符串1、字符串的概念2、字符串的初始化3、字符串的赋值4、关于字符串结束符0的讨论5、字符串数组十、课后作业十一、版权声明先来看一个需求,超女选秀一共有5人参加,输入每位超女的体重并保存在变量中,最后计算出超女的的平均体重。示例(book40.c)/* * 程序名:book4...原创 2020-03-30 16:30:32 · 1097 阅读 · 0 评论 -
C语言函数
文章目录一、函数的概念1、函数的概念2、函数的分类二、自定义函数的声明三、自定义函数的定义四、自定义函数代码的组织1、非通用能功的函数2、通用能功的函数3、注意事项五、库函数六、需要包含哪些头文件七、调用函数的方法八、函数调用的过程九、函数参数的传递十、const约束十一、应用经验1、如何寻找函数2、测试函数的功能十二、课后作业十三、版权声明一、函数的概念1、函数的概念每个C程序都至少有一个...原创 2020-03-30 16:27:10 · 1196 阅读 · 0 评论 -
C语言变量的作用域
文章目录一、变量的作用域二、全局变量三、局部变量四、函数的参数五、注意事项六、课后作业七、版权声明一、变量的作用域作用域是程序中定义的变量存在(或生效)的区域,超过该区域变量就不能被访问。C语言中有四种地方可以定义变量。1)在所有函数外部定义的是全局变量。2)在头文件中定义的是全局变量。3)在函数或语句块内部定义的是局部变量。4)函数的参数是该函数的局部变量。顺便解释一下,函数的声明...原创 2020-03-30 16:22:59 · 432 阅读 · 0 评论 -
C语言指针
文章目录一、变量的地址二、指针三、对指针赋值四、通过指针操作内存变量五、再来讨论函数的参数传递六、空指针七、数组的地址八、地址的运算九、指针占用内存情况十、指针的其它知识十一、小结十二、课后作业十三、版权声明一、变量的地址内存变量简称变量,在C语言中,每定义一个变量,系统就会给变量分配一块内存,而内存是有地址的。如果把计算机的内存区域比喻成一个大宾馆,每块内存的地址就像宾馆房间的编号。C语言...原创 2020-03-30 16:16:41 · 926 阅读 · 1 评论 -
C语言整数
文章目录一、整数的概念二、整数的取值范围三、整数的输出四、二进制数、八进制数和十六进制数的书写1、二进制2、八进制3、十六进制4、需要注意的坑五、常用的库函数六、数据类型的别名七、随机数1、生成随机数2、生成一定范围随机数八、课后作业九、版权声明一、整数的概念整数是我们生活中常用的数据类型,也是编程中常用的一种数据,C语言使用int关键字来定义整数变量(int是 integer 的简写)。在...原创 2020-03-30 15:00:54 · 1454 阅读 · 0 评论 -
C语言字符
文章目录一、ASCII码表1、ASCII 控制字符 (字符编码: 0-31)2、ASCII 可打印字符 (字符编码: 32-127)3、转义字符在这里插入图片描述二、字符就是整数三、常用的库函数四、课后作业九、版权声明在实际开发中,程序员很少用单个字符来表示数据,字符的意义主要作为数组的时候可以形成一个字符串。在本章节中,我们重点介绍字符与整数之间的关系和ASCII码的相关知识。字符类型ch...原创 2020-03-30 14:57:04 · 2149 阅读 · 0 评论 -
C语言浮点数
文章目录一、浮点数的概念二、点用内存的情况三、浮点数的精度1、测试float类型2、测试double类型3、测试long double类型4、测试总结四、浮点数的输出五、常用的库函数六、整数转换为浮点数七、应用经验八、科学计数法九、课后作业十、版权声明一、浮点数的概念浮点数也称小数或实数。例如,0.0、75.0、4.023、0.27、-937.198 都是合法的小数。C语言中采用float和...原创 2020-03-30 14:53:27 · 1278 阅读 · 1 评论 -
C语言字符串
文章目录一、字符串的概念二、占用内存的情况三、字符串的初始化四、字符串与指针五、字符串的结尾标志六、字符串的输出七、字符串越界八、字符串常用的库函数1、获取字符串的长度(strlen)2、字符串复制或赋值(strcpy)3、字符串复制或赋值(strncpy)4、字符串拼接(strcat)5、字符串拼接(strncat)6、字符串比较(strcmp、strncmp)7、字符查找(strchr、str...原创 2020-03-30 14:50:56 · 1251 阅读 · 0 评论 -
C语言数据类型转换
文章目录一、自动类型转换1、操作数中没有浮点型数据时2、操作数中有浮点型数据时3、赋值运算符两侧的类型不一致时4、右值超出左值类型范围时二、强制类型转换三、课后作业四、版权声明计算机进行算术运算时,要求各操作数的类型具有相同的大小(存储位数)及存储方式,不能将char 型( 1 字节)数据与 int 型(2、4或8字节)数据直接参与运算;由于存储方式的不同,也不能将 int 型数据与 doubl...原创 2020-03-30 14:47:43 · 477 阅读 · 0 评论 -
C语言结构体
文章目录一、结构体的概念二、结构体变量三、占用内存的情况四、结构体的变量名五、结构体初始化六、成员的访问(使用)七、结构体数组八、结构体指针九、结构体的复制十、结构体作为函数的参数十一、枚举和共同体十二、memset和bzero函数1、memset函数2、bzero函数十三、课后作业十四、版权声明一、结构体的概念前面的教程中我们讲解了变量和数组(array),变量是一个一个定义的,数组是一组具...原创 2020-03-30 11:33:26 · 778 阅读 · 0 评论 -
C语言格式化输出
文章目录一、格式化输出1、类型符(type)2、宽度(width)3、对齐标志(flags)4、精度(prec)二、格式化输出到字符串三、C语言代码的多行书写四、课后作业五、版权声明一、格式化输出格式化输出的函数有printf、sprintf和snprintf等,功能略有不同,使用方法大同小异,本章节我们先以printf为例。对于 printf 函数,相信大家并不陌生。之所以称它为格式化输出...原创 2020-03-30 11:30:18 · 646 阅读 · 0 评论 -
C语言main函数的参数
文章目录一、main函数的参数二、C程序的规范写法三、envp参数四、课后作业五、版权声明程序运行的时候,有些需要带参数,有些不带参数,例如linux操作系统的命令,它们本质上就是C程序。1)Linux命令中,无参数的不多。pwd #显示当前目录clear #清屏2)大部Linux命令是带参数的。cp book1.c book2.cmkdir /tmp/dnamemv bo...原创 2020-03-30 10:17:13 · 880 阅读 · 0 评论 -
C语言动态内存管理
文章目录一、相关的库函数1、malloc 函数2、free 函数二、内存被耗尽三、野指针1、指针变量未初始化2、指针释放后之后未置空四、应用经验1、数组申明的改进2、链表3、我的建议五、课后作业六、版权声明在C语言中,编写程序的时候不能确定内存的大小,希望程序在运行的过程中根据数据量的大小动态的分配内存。动态内存管理,就是指在程序运行过程中动态的申请和释放内存空间。C语言允许程序动态管理内存,...原创 2020-03-30 10:11:08 · 446 阅读 · 0 评论 -
C语言文件操作
文章目录一、文本数据和二进制1、文本数据2、二进制数据3、文本文件和二进制文件二、打开文件1、文件指针2、打开文件3、关闭文件4、注意事项三、文本文件的读写1、向文件中写入数据2、从文件中读取数据四、二进制文件的读写1、向文件中写入数据2、从文件中读取数据3、注意事项五、文件定位1、ftell函数2、rewind函数3、fseek函数4、注意事项六、文件缓冲区七、标准输入、标准输出和标准错误八、课...原创 2020-03-30 10:00:45 · 1132 阅读 · 0 评论 -
C语言目录操作
文章目录一、获取当前工作目录二、切换工作目录三、目录的创建和删除四、获取目录中的文件列表1、包含头文件2、相关的库函数3、数据结构4、读取目录五、应用经验六、课后作业七、版权声明目录的操作不论是在嵌入式还是应用软件编程都是必不可少的,不同的开发语言可能略有不同,本章节主要是讨论在Linux系统下目录的一系列操作,以我的个人经验,创建目录和列出目录中的文件这两个功能用得最多。一、获取当前工作目录...原创 2020-03-30 09:59:07 · 987 阅读 · 0 评论 -
C语言时间操作
文章目录一、time_t别名二、time库函数三、tm结构体四、localtime库函数五、mktime库函数在这里插入图片描述六、程序睡眠七、精确到微秒的计时器1、精确到微秒的timeval结构体2、时区timezone 结构体3、gettimeofday库函数八、应用经验九、课后作业十、版权声明UNIX操作系统根据计算机产生的年代和应用采用1970年1月1日作为UNIX的纪元时间,1970...原创 2020-03-30 09:56:17 · 619 阅读 · 0 评论 -
C语言目录和文件操作扩展
文章目录一、access库函数二、stat库函数1、stat结构体2、stat库函数三、utime库函数四、rename库函数五、remove库函数六、课后作业七、版权声明本章节扩展一些目录和文件操作的更多知识,因为这些知识涉及到时间操作,所以放在时间操作之后的章节中介绍。一、access库函数access函数用于判断当前操作系统用户对文件或目录的存取权限。包含头文件:#include ...原创 2020-03-30 09:54:19 · 456 阅读 · 0 评论 -
C语言获取系统错误
文章目录一、strerror函数二、errno的细节1、调用库函数失败不一定会设置errno2、errno不能作为调用库函数失败的标志3、程序员可以不用errno三、课后作业四、版权声明我们在写程序的时候需要调用C语言提供的库函数,并通过函数的返回值判断调用是否成功。其实在C语言中,还有一个全局变量errno,存放了函数调用过程中产生的错误码。为防止和正常的返回值混淆,库函数的调用一般并不直接...原创 2020-03-30 09:52:47 · 741 阅读 · 0 评论 -
C语言编译预处理
文章目录一、预处理指令二、包含文件三、宏定义指令1、无参数的宏2、带参数的宏四、条件编译1、#ifdef2、#ifndef3、#undef五、课后作业六、版权声明C语言由源代码生成可执行程序的过程如下:C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件其中编译预处理阶段,读取C源程序,对其中的预处理指令(以#开头的指令)和特殊...原创 2020-03-30 18:53:01 · 632 阅读 · 0 评论 -
C语言gdb调试
文章目录一、gdb的安装二、调试前的准备三、基本调试命令四、课后作业九、版权声明程序员写在编写程序的时候不可能是一帆风顺的,gcc编译器可以发现程序代码的语法错误,但不能发现程序的业务逻辑错误,调试程序是软件开发的内容之一。调试程序的方法有很多种,例如可以用printf语句跟踪程序的运行步骤和显示变量的值,本章节介绍一个功能强大的调试工具gdb。一、gdb的安装CentOS系统中,用root...原创 2020-03-30 09:46:31 · 508 阅读 · 0 评论 -
C语言makefile文件
文章目录一、makefile的编写二、make命令三、makefile文件中的变量四、应用经验五、课后作业六、版权声明在软件的工程中的源文件是很多的,其按照类型、功能、模块分别放在若干个目录和文件中,哪些文件需要编译,那些文件需要后编译,那些文件需要重新编译,甚至进行更复杂的功能操作,这就有了我们的系统编译的工具。在linux和unix中,有一个强大的实用程序,叫make,可以用它来管理多模块...原创 2020-03-30 09:44:03 · 599 阅读 · 0 评论