在 Linux 内核代码,特别是驱动代码中经常见到的用法是使用一个标准结构,后面的代码基于这个结构来实现,类似面向对象的多态特性。
在 C 语言里面借助结构体和函数指针实现的这个功能,这里我们写了个例子,提取了关键代码:
#include
struct s_new{
char name[10];
char* (* my_method)(char *name);...
分类:
系统相关 时间:
2014-05-23 07:58:18
阅读次数:
324
模板与泛型编程--实例化[续]二、函数模板的显式实参 在某些情况下,不可能推断模板实参的类型。当函数的返回类型必须与形参表中所用的所有类型都不同时,最常出现这一问题。在这种情况下,有必要覆盖模板实参推断机制,并显式指定为模板形参所用的类型或值。1、指定显式模板实参 如果函数形参类型不统一,该如何指定sum的返回类型?template
??? sum(T, U);
此时使用任一形参调用都一定...
分类:
编程语言 时间:
2014-05-22 13:05:59
阅读次数:
322
一道笔试题,纸上写的,誊到电脑上并调试通过。没经验,摸索的野蛮做法,不知道有没有更简洁更抽象的算法。
是英文题,原题是不用buffer(缓存)反转字符串打印输出,受OJ的毒害,我就认为只要逆序打印就行了(要是把原字符串改了,我还真不知道怎么办到,尤其听说字符串常量不能被更改,在文章尾部会做验证)。
版本一:
用了一下递归,思路是用指针遍历字母,每碰到空格就用新指针往下递归调用...
分类:
其他好文 时间:
2014-05-22 10:12:28
阅读次数:
298
模板与泛型编程--实例化引言: 模板是一个蓝图,它本身不是类或函数。编译器使用模板产生指定的类或函数的特定版本。产生模板的特定类型实例的过程称为实例化。 模板在使用时将进行实例化,类模板在引用实际模板类型时实例化,函数模板在调用它或用它对函数指针进行初始化或赋值时实例化。1、类的实例化 当编写Queueqi时,编译器自动创建名为Queue的类。实际上,编译器通过重新编写Queue模板,用类型in...
分类:
编程语言 时间:
2014-05-22 10:11:06
阅读次数:
367
C++11新特性
C++11已经推出三年了(2011),编译器GCC4.7、Clang3.1在2012年已经逐渐完善,VS2013也已经支持相关特性,GCC4.8.1支持全部特性。不过新特性似乎在工业界并未得到太多应用,可能出于兼容性和稳定性的考虑吧。
推出的新特性还是相当的丰富,看下面这张图就知道了。我仅仅在这里提一下相对比较容易应用的部分,包括语法上的一些扩展以及改进,lambda表达...
分类:
编程语言 时间:
2014-05-22 09:30:32
阅读次数:
358
【题目】
原文:
2.2 Implement an algorithm to find the nth to last element of a singly linked list.
译文:
实现一个算法从一个单链表中返回倒数第n个元素。
【分析】
【思路一】
(1)创建两个指针p1和p2,指向单链表的开始节点。
(2)使p2移动n-1个位置,使之指向从头...
分类:
其他好文 时间:
2014-05-22 09:03:53
阅读次数:
315
数组其实是一种变相的指针,数组名同时也是指针,eg:
CODE == &CODE[0];
数组的加法:
#include
#define SIZE 4
int main(void)
{
shortdates[SIZE];
short* pti;
shortindex;
doublebills[SIZE...
分类:
编程语言 时间:
2014-05-22 08:48:53
阅读次数:
276
写的一个Android对话框,点击按钮获取EditText里面的值,这里一直报空指针异常,研究了很长时间终于解决了。
异常如下:
我原来的代码:
//更新对话框
private void updateDialog(final String id){
TableLayout updatemsg = (TableLayout)getLayoutInflater().inflate(...
分类:
移动开发 时间:
2014-05-22 06:40:46
阅读次数:
355
给定一个向量,其中的每个元素代表了高度,比如height[3] = 5,说明在坐标轴中在点3处存在高度为5的竖线,这样所有的元素就形成一个琴状的形状,最后要求的就是两条竖线之间的矩形形状最大的面积。最直觉的做法就是穷举,这样的复杂度是O(n2),显然还有更合适的方法,因为在这样的方法中有很多确定要小的面积也进行了计算。关于面积有两个变量,一个是横轴之间的距离,;另一个是两条竖轴之间的距离。我们可以固定其中一个变量,很显然,我们可以先取最远的两条竖线进行比较,然后使两个辅助指针逐渐缩小,取两个辅助指针中的较小...
分类:
其他好文 时间:
2014-05-20 15:44:28
阅读次数:
227