再论数组

在前面着重说明了数组和指针并不一致的绝大多数情形C语言数组与指针的不同之处
在实际应用中,数组和指针可以互换的情形要比两者不可互换的情形更为常见,数组下标表达式总是可以改写为带偏移量的指针表达式。

阅读全文

对内存的思考

内存的历史现代的intel处理器可以追溯到最早期的intel芯片。1.8085处理器充分利用了芯片整合技术,它将三块芯片组合成一块。在本质上,它是把8080处理器、8224时钟驱动器和8228控制器整合到一块芯片上。虽然它内部的数据总线宽度仍然是8位,但它使用了16位的地址总线,所以能够访问2^16也就是64KB的内存。 2.8086处理器于1978年诞生,...

阅读全文

C实现矩阵数据结构与计算

用C实现矩阵写的不像前面的链表等数据结构写的顺利,因为矩阵里面的内容多的多,特别是计算部分,着实花了几天时间。目前还有一小部分算法还没有实现,后续会补上。
github源码 文件夹为Matrix,主要有两个文件:Matrix.c 、Matrix.h

阅读全文

C语言的void类型

void类型

void的字面意思是“无类型”,void * 则为无类型指针,void *可以指向任何类型的数据。
void几乎只有“注释”和限制程序的作用。
void a;这行语句编译时会出错,提示”illegal use of type ‘void’”。不过,即使void a的编译不会出错,它也没有任何实际意义。

阅读全文

字符串的模式匹配算法

求子串位置的定位函数index

子串的定位操作通常称作串的模式匹配,是各种串处理系统中最重要的操作之一。
一个最简单的匹配方法是:
从左到右一个个匹配,如果这个过程中有某个字符不匹配,就跳回去,将模式串向右移动一位。

阅读全文

C封装字符串、字符串数组对象

字符串(String)

github源码
计算机上的非数值处理的对象基本上是字符串数据。字符串(String)是由零个或you’x多个字符组成的有限序列,一般记为:
s = “a1a2…an” (n>=0)

阅读全文

C语言的malloc

为什么C语言要有malloc

malloc就是memory allocate动态分配内存,malloc的出现时为了弥补静态内存分配的缺点,静态分配内存有如下缺点:

阅读全文

C封装单链循环队列对象

SingleCircularLinkedListQueue单链循环队列

单链循环队列用单向循环链表实现。
github源码

阅读全文

用单链表表示的链队列

队列

和栈相反,队列(Queue)是一种先进先出(First In First Out,缩写为FIFO)的线性表。

阅读全文

栈与递归的实现

栈与递归

栈还有一个重要应用是在程序设计语言中实现递归。一个直接调用自己或通过一系列的调用语句间接的调用自己的函数,称为递归函数。

阅读全文