如何在C语言中实现简单的泛型编程(一)

本文介绍了如何在C语言中利用void指针和memcpy函数实现简单的泛型编程,以实现交换不同类型元素的功能。通过传递元素的指针和大小,可以避免使用模板的情况下实现类似的效果。文章还提到了潜在的安全问题和注意事项,并举例说明了如何在不同场景下应用这种泛型编程思想。
摘要由CSDN通过智能技术生成

题外话

              鄙人最近在家里听斯坦福大学的开放课程——《编程范式Programming Paradigms》。

附上veryCD的资源下载地址:

http://www.verycd.com/topics/2838268/

        这个是英文授课,现在还是没有中文或英文字幕的。就课程来说非常不错。其中Lecture 4中讲到了一种在C语言中不用C++中的template实现泛型编程的方法。我在这里总结了它的笔记后,加入了我自己的一些思考和试验写下了这篇文章分享一些经验给大家。

正题

        泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。所谓泛型(Genericity),是指具有在多种数据类型上皆可操作的含意。C++通过参数化类型来实现通用的容器。如Java则引入了单根继承的概念。比泛型更加让你熟悉的可能就是STL,Standard template library,标准模板库。STL是一种高效、泛型、可交互操作的软件组件。STL以迭代器 (Iterators)和容器(Containers)为基础,是一种泛型算法(Generic Algorithms)库,容器的存在使这些算法有东西可以操作。STL包含各种泛型算法(algorithms)、泛型指针(iterators)、泛型容器(containers)以及函数对象(function objects)。STL并非只是一些有用组件的集合,它是描述软件组件抽象需求条件的一个正规而有条理的架构。

        而在C语言中,同样也可以通过一些手段实现这样的泛型编程。如通过宏。这里讲的是另一种方法——通过无类型指针void*。

  

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值