• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

单链表排序之直接插入排序

单链表排序之直接插入排序
****单链表排序之直接插入排序**** /*前段时间刚学会几种排序方法,最近学习了单链表,就用来试试,本篇链表的排序方法<一>讲述的是单链表的直接插入排序;(注意:请仔细看准节点结构体的包装和头指针的包装再阅读以下代码); 直接插入排序的思想和直接插入排序数组的方法,我都已经在直接插入排序的文章中介绍了; 直接插入排序链接:http……继续阅读 »

理解 GLib 的单元测试框架

理解 GLib 的单元测试框架
单元测试 单元测试,那些似乎从来都不怎么有用的软件工程教科书里有关于它的确切定义。在本文中,只是将其视为检验某个函数是否正确的一种手段。可将单元测试想象为质检员,将要检验的函数想象为待出厂的零件。 例如,我想检验我实现的双向链表容器 PmList 的 pm_list_append 函数,我可以为它写一个测试程序: #include <stdio.h&g……继续阅读 »

消息路标和函数调用链

消息路标和函数调用链
之前介绍了极客讨论器通过分析C/C++/Java/Python/C#/Objective-C代码来生成函数地图,和按调用顺序查看源代码的旅行模式。 而在函数地图下,还可以通过给函数节点设置路标的方式,快速查看代码间的调用关系。路标是通过批注消息设置的,所以叫“消息路标”。简单来说,批注消息批注的代码属于哪个函数,对应的函数节点上就会设置一个路标。如图: 消息……继续阅读 »

C语言-内存分配

C语言-内存分配
内存五个区域 栈区由编译器自动编译释放,比如: //此时将存储在常量区的字符串suica拷贝到栈区. char string[] = "suica"; 堆区堆区需要程序员手动分配,手动释放.在C语言中可使用malloc进行分配: //给指针p分配一个大小的内存空间 int* p = (int *) malloc (1); 静态区只初始化一……继续阅读 »

区分指针、变量名、指针所指向的内存

区分指针、变量名、指针所指向的内存
理解变量名和指针 这篇文章想讲的东西很简单,文章的内容也很少,但是却也是当年着实困惑我许久的一个极其小的知识点。 直接以一个例程,以及程序中的注释进行说明 #include<stdio.h> int main(void) { int x=1; int *px1, *px2; px1 = &x; px2 = ……继续阅读 »

函数指针—C/C++中int *f(4)和int (*f)(4)的区别

函数指针—C/C++中int *f(4)和int (*f)(4)的区别
简单说明 int *f(),表示这个函数f,函数的返回值的类型是 int *。 int (*f)(),表示这是一个函数指针,它要指向一个函数才能有用,指向一个函数之后就可以用它来代替该函数,之后使用这个指针就相当于使用该函数。 通过程序去说明 #include<stdio.h> int fun(int); int main(void) { ……继续阅读 »

M4 说 C 要有 lambda,C 就有了 lambda

M4 说 C 要有 lambda,C 就有了 lambda
C 语言不具备匿名函数功能,但是 Vala 想办法模拟了一个[1]。我一直想用 C 的宏模拟一个,但是技拙,或许根本就无法实现。 GCC 提供了一个扩展,可以实现匿名函数[2]。例如: #define lambda(return_type, function_body) \ ({ return_type fn function_body fn }) ……继续阅读 »

编程语言的变迁

编程语言的变迁
引言 做技术几年下来,要不停跟着技术的变革而学习,有时会出现“只见树木,不见森林”的情况,在项目实战中,片面的技术方案可能会因为考虑不全面而导致后期扩展困难甚至引发bug。本文档试图以一个问题的解决方案为主线,描绘出目前常用技术的变迁及使用。 问题提出 刚学编程的时候,试图写一个下载程序:给定一个URL网址,下载并保存为文件。基本的C语言知识,加上网上找的资……继续阅读 »