在C语言中,我们经常会看见const、volatile和restrict,其实他们都是ANSI C的类型限定词。使用这些关键字,我们就可以创建受限类型(qualified type)。下面我们一一介绍。1. C类型限定词介绍我们知道对于一个变量,都有类型和存储类两个属性,前者表明变量类型,后者表明变量的存储位置。C90中新增加了两个变量的属性:不变性与易变性。不变性用const关键字来声明,...
C预处理器是C语言的一个重要特性,在编译程序之前,先由预处理器检查程序。但其实预处理器并不能理解C,它一般只是接受一些文本并将其转换成其他文本。常见的C预处理器指令有:#define、#include、#ifdef、#else、#endif、#ifndef、#if、#elif、#line、#error、#pragma。本文一一介绍。1. C预处理器指令的一些通用特性预处理器指令从#开始,到其...
Linux下的链接分为两种:硬链接(Hard Link),符号链接(Symbolic Link,也称软链接)。默认情况下,ln命令产生硬链接,加上-s参数时产生软链接。本文讲述链接的基本概念,以及程序中处理链接的相关函数。一,概念理解1,硬链接硬链接指通过索引节点来进行链接。在Linux文件系统中,保存在磁盘分区上面的软件,不管是什么类型,都会分配一个编号,称为索引节点号(Inode Ind...
守望者的逃离问题是算法中一个很经典的案例,特别是在贪心算法中经常会被引用。今天我们就来总结一下这个问题的多种解法。题目恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去。到那时,岛上的所有人都会遇难。守望者的跑步速度为17m/s,以这样的速度是无法...
在很多程序里面,我们都会见到如下代码段:#ifdef __cplusplus
extern "C" {
#endif
/*
* C代码段
*/
#ifdef __cplusplus
}
#endif__cplusplus是CPP中自定义的宏,表示这是一段cpp代码,编译器按照C++的方式编译系统。如果这时候我们需要使用C语言的代码,那么就需要加上extern...
首先assert()和sizeof一样,并不是函数,而是一个宏。assert宏的原型定义在<assert.h>中:#include <assert.h>
//Linux下的定义
void assert(scalar expression);
//VS里面的定义
#define assert(e) ((e) ? (void)0 : _assert(#e, ...
两者都以字节为单位计算长度。sizeof是操作符,strlen是函数。有什么区别呢?sizeof是在程序编译的时候计算参数占用的字节数,而strlen是在程序执行过程中计算字符串占用的字节数。strlen只能用于计算字符串的长度。它的机制是从字符串开始计算,遇到结束符('\0',ASCII码值为0)就停止计算,不包括结束符占用的一个字节空间。也就是说,要使用strlen()函数计算长度,那么...
昨天看到关注的一个微信主页上面出了一个小的编程题,今天早晨起来没事,就做了一下。问题其实很简单,但是我觉得正好可以借此机会回顾一下C文件读取的概念和方法,所以就做了一下,也记录一下。题目有一个文件data.txt,里面有如下数据:[A]0123 [B]0003 [C]1000 [D]0056
需要输出成如下格式:A 123
B 3
C 1000
D 56我的程序源代码:/*
* ======...
- « 前一页
- 1
- 2
- 3
- 4
- 5
- 6
- 后一页 »