在 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
数组其实是一种变相的指针,数组名同时也是指针,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
编程题:指向变量的指针变量#include<stdio.h>voidmain(){inta,b;int*p,*q;a=3;b=5;p=&a;q=&b;printf("%d,%d\n",*p,*q);}
分类:
其他好文 时间:
2014-05-21 01:44:47
阅读次数:
260
编程题:指针变量,直接引用和间接引用的区别。#include<stdio.h>voidmain(){inta,b;int*p;/*定义指针变量p*/p=&b;/*将变量b的地址放在变量p中*/a=3;/*直接引用变量a*/*p=5;/*间接引用变量b*/printf("a=%d,b=%d\n",a,b);}
分类:
其他好文 时间:
2014-05-21 01:43:30
阅读次数:
295
默认自动初始化:Go引入了零值的概念,即每个对象被创建的时候,默认初始化为它相应类型的零值。例如,string为””,指针为nil,int为0等等,这样就保证了变量在使用时,不会因为忘记初始化而出现一些莫名其妙的问题OOP在Go中是通过组合而非继承来实现的,因为“继承”存在一..
分类:
其他好文 时间:
2014-05-20 17:21:06
阅读次数:
270