首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
C语言篇
Lonble
创建于2021-05-18
订阅专栏
带你深入了解C语言
等 2 人订阅
共13篇文章
创建于2021-05-18
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
C语言篇:可变参数函数
可变参数函数是C语言中一种相当特殊的语法,它允许我们向函数传递任意数量和类型的参数,并在运行时根据我们自己书写的逻辑来解析这些参数。当然,这样做也带来了一些代价,比如牺牲了编译器的类型检查以及带
C语言篇:复合字面量
复合字面量是C语言用来创建匿名对象的一种方式,在C99中引入。它实际上是一种语法糖,就算没有它也不影响C语言的表达能力。它常用于函数的参数传递,当程序员不想为只使用一次的对象创建标识符时,即可使
C语言篇:NULL与nullptr
前言 可能有些朋友看到nullptr会以为我在讲C++,然而正如标题所示这是“C语言篇”中的一篇文章,自然是要讲C语言的。没错,正如大家所料, C23 不幸地从 C++ 引入了nullptr关键字和与
C语言篇:语法进阶
本文介绍一些C语言中高阶的语法知识,比如声明、定义、作用域、生存期、名字空间等,这些内容通常难以理解,但是实际开发中又经常用到。大部分教材或其他相关书籍都对这部分内容避而不谈或浅尝辄止,研究多日后,我
C语言篇:枚举类型
为什么需要枚举类型 实际编写程序的时候,我们经常使用一系列整数来表示一些属性。比如我要写一个打开文件的函数,有一个参数名为mode,它为0表示“只读”,1表示“只写”,2表示“读写”。这样的设计对机器
C语言篇:文件 - scanf解析
该解析过程适用于scanf、fscanf、sscanf,但sscanf略有不同,因为不包含缓冲区或文件位置指示器,每次读取都从头开始。 空白字符是一些常用来分隔记号的字符,包括空格' ',分页符'\f',换行符'\n',回车符'\r',水平制表符'\t',垂直制表符'\v'。 …
C语言篇:文件 - I/O操作
对于关联到终端的输入流,如果读完了缓冲区中最后一个字节,并尝试继续读取,则请求终端输入,此时程序控制权转交终端。 fprintf函数把字符写入流中,数据由格式字符串及后面的参数提供。 函数返回实际写入的字符数,如果发生错误则返回一个负数。 如果所给参数多于格式控制需要的参数,则…
C语言篇:文件 - 文件与流操作
remove函数类似于Unix/Linux命令rm,接受一个文件名,然后删除其对应的文件。对于大多数文件系统,删除文件仅仅是删除文件索引,并不擦除硬盘内容,所以能在一瞬间完成。 函数执行成功返回0,失败返回非0。 rename函数类似于Unix/Linux命令mv,不仅能重命名…
C语言篇:文件 - 基础知识
stdio.h是C语言的标准输入输出库的头文件,申明了很多类型、宏,以及相关函数。如果想使用标准输入输出(如printf函数),就必须包含该头文件。对于gcc编译器,标准输入输出库默认链接到每个程序,不需要手动链接。 在C语言的标准输入输出库中,I/O被抽象成“流”,以忽略不同…
C语言篇:语法细节杂谈(番外篇)
申明位置 在C89(C90)以及之前,块内的申明(比如函数内)必须放在块开头(即所有申明在语句之前)。而从C99开始,申明可以放在任何位置。比如以下代码,在C99中可以通过编译,而在C89(C90)中
C语言篇:数组
在很多情况下,数组可以当作第一个元素的指针来使用,但数组不是指针。在 C语言篇:指针 这篇文章的“指针与数组”一节有详细介绍。 众所周知,不管是几维的数组,都是按照一维数组存储的。 多维数组其实是元素为数组的数组。 我一直非常反对将二维数组表示为行和列的矩阵,不仅不符合底层原理…
C语言篇:语言结构
在谈C的语言结构之前,需要先解释一些基本元素的含义。 注意:单个变量、常量或函数名也是一个表达式。 其中var、fn、1、5都是表达式,其返回值为自身的值;fn(1)也是一个表达式,返回函数调用的返回值;fn(1) + 5也是一个表达式,返回算术运算的结果;var = fn(1…
C语言篇:指针
在程序运行的过程中,所有的数据都是放在主存(内存)里的,主存按字节编址,每个字节对应一个编号,称为地址,计算机通过地址可以精确地存取数据。 在C语言中有一类数据类型,它保存主存地址,并可以通过运算符对该地址的数据进行操作。如果它保存的是某个变量的地址,可以形象地说它指向了某个变…