从点类派生圆类,再由圆类派生圆柱类 #include <iostream> #include <string.h> using namespace std; const double pi=3.14; class Point { private: int x, y; //点的x和y坐标 public: Point( int = 0, int = 0 ); // 构造函数 void SetPoint( int, int ); // 设置坐标 int GetX() { return x; } /…

2021年1月15日 0条评论 153点热度 阅读全文

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

2021年1月15日 0条评论 132点热度 阅读全文

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

2020年11月22日 0条评论 125点热度 阅读全文

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

2020年11月2日 0条评论 135点热度 阅读全文

Delphi有两种创建对象的方法 直接创建对象实体 比如创建一个线程有下面这样两种方式 begin TMyThread.Create; end; 用变量(指针)保存对象实体地址 var myTestThread: TMyThread; begin myTestThread:= MyThread.Create; end; 说明 第一种方式就是创建了一个线程,这个线程去执行,但是你却没有这个线程对象的指针,所以你不能去控制它,只能任由它去执行,如果能自己结束还好,但是如果是一个循环执行的线程,那么就可能在那里永远执行下…

2020年10月31日 0条评论 80点热度 阅读全文

内存五个区域 栈区由编译器自动编译释放,比如: //此时将存储在常量区的字符串suica拷贝到栈区. char string[] = "suica"; 堆区堆区需要程序员手动分配,手动释放.在C语言中可使用malloc进行分配: //给指针p分配一个大小的内存空间 int* p = (int *) malloc (1); 静态区只初始化一次;如果初始化没给值,默认为0;只有程序退出才释放.将变量定义前加static则存储在静态区 static int a = 5; 常量区存放常量字符串,程序结束后系统释放. int…

2020年10月1日 0条评论 100点热度 阅读全文

理解变量名和指针 这篇文章想讲的东西很简单,文章的内容也很少,但是却也是当年着实困惑我许久的一个极其小的知识点。 直接以一个例程,以及程序中的注释进行说明 #include<stdio.h> int main(void) { int x=1; int *px1, *px2; px1 = &x; px2 = &x; //上面这两行代码是的指针px1、px2指向同一块内存,也就是都指向int型整数x, //也就是*px1、*px2、变量名x都是代表同一块内存的数据 int y = x; //…

2020年9月19日 0条评论 85点热度 阅读全文

简单说明 int *f(),表示这个函数f,函数的返回值的类型是 int *。 int (*f)(),表示这是一个函数指针,它要指向一个函数才能有用,指向一个函数之后就可以用它来代替该函数,之后使用这个指针就相当于使用该函数。 通过程序去说明 #include<stdio.h> int fun(int); int main(void) { int (*f1)(int); int (*f2)(int); f1 = fun; f2 = &fun;//注意上面的两种初始化函数指针的方法都是正确的, /…

2020年9月16日 0条评论 97点热度 阅读全文

C 语言不具备匿名函数功能,但是 Vala 想办法模拟了一个[1]。我一直想用 C 的宏模拟一个,但是技拙,或许根本就无法实现。 GCC 提供了一个扩展,可以实现匿名函数[2]。例如: #define lambda(return_type, function_body) \ ({ return_type fn function_body fn }) 这个 lambda 宏的用法如下: lambda (int, (int x, int y) { return x > y; })(1, 2) 结果会被展开为: (…

2020年9月11日 0条评论 84点热度 阅读全文

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

2020年9月9日 0条评论 73点热度 阅读全文