
c
半句唐诗
爱编程,爱生活,程序员改变世界。
展开
-
sqlite3使用心得
字段列表与值列表需要一一对应,如果在语句中没有指定字段列表,则需要按字段顺序给出所有的值列表每个数据值的数据类型、精度和小数位数必须与相应的列匹配不能为标识列指定值,因为它的数字是自动增长的;如果在设计表的时候就指定了某列不允许为空,则必须插入数据;具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值原创 2015-08-20 09:12:18 · 498 阅读 · 0 评论 -
sqlite3运用
当前目录下建立或打开test.db数据库文件,并进入sqlite命令终端,以sqlite>前缀标识:#sqlite3 test.db 查看数据库文件信息命令(注意命令前带字符'.'):sqlite>.database查看所有表的创建语句:sqlite>.schema 查看指定表的创建语句:sqlite>.schem原创 2015-08-20 09:10:03 · 505 阅读 · 0 评论 -
友元关系
在封装中C++类数据成员大多情况是private属性;但是如果接口采用多参数实现肯定影响程序效率;然而这时候如果外界需要频繁访问这些私有成员,就不得不需要一个既安全又理想的“后门”——友元关系;C++中提供三种友元关系的实现方式,友元函数、友元成员函数、友元类。友元函数:既将一个普通的函数在一个类中说明为一个friend属性;其定义(大多数会访问该类的成员)应在类后;友元成原创 2015-08-20 09:07:17 · 878 阅读 · 0 评论 -
多态性
多态性可以简单的概括为“1个接口,多种方法”,在程序运行的过程中才决定调用的机制程序实现上是这样,通过父类指针调用子类的函数,可以让父类指针有多种形态。多态性:在基类的一个函数前加一个virtual可以实现c++的多态性,意思是子类有的,调用子类的,子类没有的调用基类的class Animal(){virtual void breath() //加上virtual表原创 2015-08-20 09:05:04 · 143 阅读 · 0 评论 -
C++类继承关系问题
在C++中继承主要有三种关系:public、protected和private。这三种继承关系中public继承是最为常用的一种继承关系,代表了接口继承含义,而他们分别具体代表了什么含义呢?1. public 从语义角度上来说,public继承是一种接口继承,根据面向对象中的关系而言就是,子类可以代替父类完成父类接口所声明的行为,也就是必须符合“Liskov替换原则(LSP)”转载 2015-08-20 09:01:47 · 434 阅读 · 0 评论 -
单例模式的优点-缺点
单例模式的优点-缺点单例模式的优点: 1,实例控制:单例模式防止其它对象对自己的实例化,确保所有的对象都访问一个实例。 2,伸缩性:因为由类自己来控制实例化进程,类就在改变实例化进程上有相应的伸缩性。单例模式的缺点:1,系统开销。虽然这个系统开销看起来很小,但是每次引用这个类实例的时候都要进行实例是否存在的检查。这个问题可以通过静态实例来原创 2015-08-20 08:59:33 · 940 阅读 · 0 评论 -
对象的封装
封装是指按照信息屏蔽的原则,把对象的属性和操作结合在一起,构成一个独立的对象。通过限制对属性和操作的访问权限,可以将属性“隐藏”在对象内部,对外提供一定的接口,在对象之外只能通过接口对对象进行操作。封装性增加了对象的独立性,从而保证了数据的可靠性。外部对象不能直接操作对象的属性,只能使用对象提供的服务。类中的数据成员的类型可以是任意的,可以定义各种类型的变量、指针、原创 2015-08-20 08:58:03 · 1876 阅读 · 0 评论 -
在C语言中引入了面向对象的思想
在C语言中引入了面向对象的思想是一种混合型的语言,同时支持结构化程序设计和面向对象程序设计方法兼容C语言,可不加修改地使用C语言代码允许数据抽象,支持封装、继承和多态等特征逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假)强制类型转换格式如下:type(表达式),例如:int(num);(type)表达式,例如:(int)num;原创 2015-08-20 08:56:50 · 784 阅读 · 0 评论 -
曾经的笔记迁移__C语言必背18个经典程序
C语言必背18个经典程序 1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/ #include "stdio.h" main() {int i,j,result; for (i=1;i result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ }转载 2015-08-18 15:02:18 · 629 阅读 · 0 评论 -
曾经的笔记迁移__自己封装的通用链表_简单实用
list.h::#ifndef _LIST_H_#define _LIST_H_int ID;#include typedef struct list_t{void *pdata;struct list_t *pnext;}LIST_T;LIST_T *creat();void list_add(LIST_T *head,void *pdat原创 2015-08-18 14:58:50 · 455 阅读 · 0 评论 -
曾经的笔记迁移__文件
ASCII文件(文本文件):每一个字节放一个ASCII代码二进制文件:把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放.“r” (只读)为输入,打开一个文本文件“w” (只写)为输出,打开一个文本文件“a” (追加)向文本,文件尾增加数据“rb” (只读)为输入,打开一个二进制文件原创 2015-08-18 14:54:11 · 371 阅读 · 0 评论 -
曾经的笔记迁移__链表的封装要点
1.使用链表时候,先确认要使用的是单向链表,还是双向链表,或者是循环链表。一定要初始化。2.添加节点时候,要注意是否队列已满。3.删除节点的时候,要注意队列是否为空。4.要有可以判断链表是否为空的函数。5.要有可以判断链表节点个数的函数。原创 2015-08-18 14:51:45 · 377 阅读 · 0 评论 -
曾经的笔记迁移__通用链表网络版
C通用链表库(1.0版) 转载自网络。 本链表库可以使用CodeBlocks(MingW)和VC系列编译器进行编译,为单向带头尾的链表,封装后使用起来很简单,实现了链表的增,删,改,排序,清空,遍历等常用操作,可进行元素的前插和尾插,还有两个功能,插入排序和清除重复元素,准备在下一版实现。头文件:list.h#ifndef LIST_H_H#define转载 2015-08-18 14:47:43 · 426 阅读 · 0 评论 -
曾经的笔记迁移__变量
变量从变量值存在的时间(即生存期)角度分:静态存储方式和动态存储方式静态:在编译时确定了固定的内存地址与内存大小,如:函数里的局部变量、全局变量等动态:由程序控制,运行时主动性的向系统申请所需大小的内存段,并且每次分配到的内存地址不固定在动态存储区存放一下数据:1、函数形式参数2、自动变量(未加static声明)3、函数调用时的现场保护和返回地址malloc() 是最常原创 2015-08-18 14:44:23 · 420 阅读 · 0 评论 -
曾经的笔记迁移__函数指针
int (*p)(int ,int ){}定义函数指针typedef int (*fType)(int ,int );定义一个新的函数类型。fType p;void *p,任何位置指向这块空间要储存什么的类型的数据,是的这个指针可以指向任何类型的数据地址,(打印是需要强制转换)。原创 2015-08-18 14:43:01 · 359 阅读 · 0 评论 -
曾经的笔记迁移__指针的类型
不能将无类型指针参与算术运算,如:p++;//错误,进行算法操作的指针必须是确定知道其指向的数据类型大小 将其改成:( (int *)p) ++;则能通过无类型指针主要作用对函数返回的限定(malloc函数)对函数参数的限定 (memcpy函数)指针的值可以改变,无法通过指针修改指向的内容关键字const放在指针类型前例如:int i, j, *q;原创 2015-08-18 14:41:36 · 331 阅读 · 0 评论 -
曾经的笔记迁移__二维数组
对二维数组的引用有三种方式:下标法。如a[i][j]或p[i][j]。指针针法,如*(*(p+i)+j)或*(*(a+i)+j)。当二维数组名作为函数实参时,对应的形参必须是一个行指针变量。和一维数组一样,数组名传送给变量的是一个地址值,因此,对应的形参也必须是一个类型相同的指针变量,在函数中引用的将是主函数中的数组元素,系统只为形参开辟一个存放地址的存储单元,而不可能原创 2015-08-18 14:37:40 · 372 阅读 · 0 评论 -
曾经的笔记迁移__指针
在C语言中,指针变量是一种特殊的变量,它是存放地址的。假设我们定义了一个指针变量i_pointer用来存放整型变量的地址,它被分配地址为(3010)、(3011)的两个字节。可以通过语句:i_pointer =&i;将i的地址(2000)存放到i_pointer中。这时, i_pointer的值就是(2000) ,即变量i所占用单元的起始地址。要存取变量i的值,可以采用间接方式:先找到存放原创 2015-08-18 14:36:13 · 386 阅读 · 0 评论 -
曾经的笔记迁移__结构体和typedef
可以将一个结构体放入另一个结构体内。结构体不能嵌套它自身 struct issue {char borrower [20]; char dt_of_issue[8]; struct cat books; } issl; 访问结构体元素的格式与访问正常的结构体类似, issl.borrower原创 2015-08-18 14:34:55 · 402 阅读 · 0 评论 -
曾经的笔记迁移__形参,实参,递归
形参变量只有在被调用时,才分配内存单元;调用结束时,即刻释放所分配的内存单元。实参和形参占用不同的内存单元,即使同名互不影响。在被定义的函数中,必须指定形参的类型实参与形参的类型应相同或赋值兼容。良好的程序设计习惯:为了使程序具有良好的可读性并减少出错,凡不要求返回值的函数都应定义为空类型;即使函数类型为整型,也不使用系统的缺省处理。一个函数在它的函数体内调原创 2015-08-18 14:28:37 · 772 阅读 · 0 评论 -
曾经的笔记迁移__数组
C编译器不会检查下标的越界即使两个数组的类型和大小相同,也不能检验其是否相等不能直接将一个数组赋给另一个数组不能为数组整体赋值二维数组:最常用的多维数组 、可以看成是由两个一维数组组成的数组 类似于一个由行和列组成的表格 二维数组的声明方式: 类型说明符 数组名[常量表达式1][常量表达式1]; 例如:int temp[4]原创 2015-08-18 14:26:42 · 582 阅读 · 0 评论