C 设计模式:装饰模式
摘要:最近在公司分享了下C语言版的设计模式,记录一下吧。 参考:《设计模式之禅》中“装饰模式”章节。 上面书中是用C++来实现的,我使用了书中的例子,改用C语言来实现。 一、基础知识 面向对象最重要的三个特性,在C语言中大致的实现如下所示。 装饰模式,在C语言中的实现: 二、讲个故事 很久很久以前,大概还
阅读全文
二维数组的动态分配
摘要:参见:http://blog.csdn.net/handsome_926/article/details/8233744 参见:http://blog.csdn.net/gaohuaid/article/details/10822851 32位(bit)和64位(bit)系统的指针占的内存不一样,注
阅读全文
表达式二叉树
摘要:涞源chengyaogen.blog.chinaunix.net 一、定义 二叉树(binary tree)是一棵每个结点都不能有多于两个儿子的树。 二、数据结构设计 因为一个二叉树结点最多是有两个儿子,所以可以直接链接到他们。树结点的声明在结构上类似双向链表的声明。在声明中,一个结点就是由elem
阅读全文
利用栈将中缀表达式转换成后缀表达式
摘要:转自http://blog.csdn.net/mvpsendoh/article/details/6440559目的:将中缀表达式(即标准形式的表达式)转换为后缀式。例子:a+b*c+(d*e+f)*g转换成abc*+de*f+g*+转换原则:1.当读到一个操作数时,立即将它放到输出中。操作符则不立...
阅读全文
scanf()读取带空格的字符串
摘要:#include int main(){ char str[128]; scanf( "%[^\n]", str ); printf( "%s\n", str ); return 0;} scanf中的正则表达式1、定制自己的扫描集%[abc]、%[a-z]、%[^abc]、%[^a-z],比isdigit()、isalpha()更加灵活。[]内是匹配的字符,^表示求反集。inti;charstr[80],str2[80];//scanf("%d%[abc]%s",&i,str,str2);//printf("%d%
阅读全文
C杂记
摘要:printf主要是为了便于取地址,默认将char,short变成了int,float变成了double;但scanf的时候,因为数据宽度的问题,必须区分%f和%lf。 memset 是字符串操作函数: 举例: int a[100]; memset(a,1,sizeof(a)); 可是a却被赋值成16
阅读全文