C语言实现泛型编程】的更多相关文章

1 问题引入 首先引入一个问题,实现一个泛型的swap函数,分别使用C++和C实现. 2 C++的泛型 C++有良好的泛型编程机制,所以我很快就写出了C++版的泛型swap函数. template<typename T> void MySwap(T &a, T &b) { T c = a; a = b; b = c; } 3 C语言的泛型 我的第一想法是既然不能直接交换变量(类型不知道),那就交换指针呀.下一瞬间,我就很想给自己一巴掌!是左值吗你就交换指针?Stupid! 那就…
泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同.在C语言中,可以通过一些手段实现这样的泛型编程.这里介绍一种方法——通过无类型指针void* 看下面的一个实现交换两个元素内容的函数swap,以整型int为例: void swap(int* i1,int* i2){ int temp; temp = *i1; *i1 = *i2; *i2 = temp; } 当你想交换两个char类型时,你还得重写一个参数类型为char的函数,是不是能用无类型的指针来作为…
今天将本博客的部分文章建立一个索引,方便大家进行阅读,当然每一类别中的文章都会持续的添加和更新(PS:博文主要使用C语言) 博客地址:http://www.cnblogs.com/archimedes/ C语言 C语言相关原理与技巧: <C语言异常与断言接口与实现> <C语言原子接口与实现> <C语言柔性数组> <C语言接口与实现实例> <C语言常量与指针> <C语言指针传递详解> <C语言指针的长度和类型> <C语…
void在英文中作为名词的解释为“空虚:空间:空隙”:而在C语言中,void被翻译为“无类型”,相应的void *为“无类型指针”.void似乎只有“注释”和限制程序的作用,当然,这里的“注释”不是为我们人提供注释,而是为编译器提供一种所谓的注释. 本文地址:http://www.cnblogs.com/archimedes/p/c-void-point.html,转载请注明源地址. void的作用: 1.对函数返回的限定,这种情况我们比较常见. 2.对函数参数的限定,这种情况也是比较常见的.…
从年初开始进行此项工作,我和合作伙伴包亮付出了大量而艰辛的劳动,现基本翻译完毕,有出版意向,如果有意向欢迎联系,不甚感激!也欢迎各位博友对此翻译提出意见建议以及指导如何出版,在此谢过! 前言 时间回到2011年初,我做了一些泛型编程(generic programming)的实验,最后这些实验形成了shapeless,我绝不会想到五年后它居然会成为一个被如此广泛使用的类库.非常感谢那些信任我并将shapeless用到项目中的人,这种信任对任何开源项目来说都是巨大的动力.同样感谢多年来对项目做出巨…
在c++程序中调用被C编译器编译后的函数,为什么要加extern  "C"? C++语言支持函数重载,C语言不支持函数重载.函数被C++编译后在库中的名字与C语言的不同.C++提供了C连接交换指定符号ectern  "C"解决名字匹配问题. 头文件中ifndef/define/endif是干什么用的? 防止该头文件被重复引用. 评价一下C与C++的各自特点. C是一种结构化语言,重点在于算法和数据结构.C程序的设计首先考虑的是如何通过一个过程,对输入进行运算处理得到…
在c++程序中调用被C编译器编译后的函数,为什么要加extern  “C”? C++语言支持函数重载,C语言不支持函数重载.函数被C++编译后在库中的名字与C语言的不同.C++提供了C连接交换指定符号ectern  “C”解决名字匹配问题. 头文件中ifndef/define/endif是干什么用的? 防止该头文件被重复引用. 评价一下C与C++的各自特点. C是一种结构化语言,重点在于算法和数据结构.C程序的设计首先考虑的是如何通过一个过程,对输入进行运算处理得到输出.而对于C++,首先考虑的…
一.数据类型: 在任何编程语言中,数据类型作为一个整体,ANSI-C包含的类型为:int.double.char……,程序员很少满意语言本身提供的数据类型,一个简单的办法就是构造类似:array.struct 或union. 那么,什么是数据类型呢?我们可以这样定义:一种数据类型是一些值的集合——通常char类型共有256不同的值,int有更多,double也包含更多的值,但是它通常和数学意义上的实数不同. 相应地,我们可以定义数据类型:包含一些值的集合,在值上面添加一些操作.通常,这些值都是计…
在实际编程中,常常会需要一些方法(函数),比如排序,它们具体实现基本一致,仅仅只有参数类型不同, 那么可不可以有一种通用的函数,不管是什么类型的参数都可以通用呢? 泛型编程:泛型即是指具有在多种数据类型上皆可操作的含义,与模板有些相似. 利用泛型编程,我们可以写一些通用的函数,以减少代码量,实现代码的通用性,以下简单的举个栗?子 泛型冒泡排序: #include <stdio.h> #include <stdlib.h> #include <string.h> #inc…
学习过C++的朋友们应该对STL和泛型编程这两个名词不会陌生.两者之间的关系不言而喻,泛型编程的思想促使了STL的诞生,而STL则很好地体现了泛型编程这种思想.这次想简单说一下STL在ACM中的一些应用.我们知道,在ACM竞赛中,经常需要用到数组.字符串.队列.堆栈.链表等数据结构和排序.搜索等算法,以提高程序的时间.空间运行效率.然而如果这些数据结构总是需要手工来编写,那无疑会是一件很麻烦的工作,而STL的出现很好地解决了这个问题. 我们简单来了解一下STL.STL提供了三种类型的组件:容器.…