C和C++中泛型编程 - 适应不同类型参数的函数

本文探讨了如何在C和C++中使用泛型编程,特别是通过函数模板来处理不同类型参数。以交换两个整数值为例,展示了C语言的指针实现,以及C++的函数模板实现,强调了最佳实践是在头文件中定义函数模板。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      首先一个简单的问题,如何实现交换两个整数的值? 想必每个有编程经验的人都能作答。

C语言用指针实现如下:

void swap(int * a, int * b){
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

C++可以使用引用实现如下:

void swap(int & a, int & b){
    int tmp = a;
    a = b;
    b = tmp;
}

顺便记录另外两个很有意思的实现,不用中间变量tmp (面试中可能会问到):

void swap(int & a, int & b){
    a = a + b;
    b = a - b;
    a = a - b;
}

void swap(int & a, int & b){
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
}

      然后,言归正传,假如需要实现任意相同类型两数交换值应该怎么办呢? 比如需要交换两整数、两浮点数或者两个字符。这时,为每种情况编写函数实现显得冗余, 可以采用泛型编程的方法。C语言中泛型编程需要用到 void*(指向任意类型的指针), C++中则采用函数模板。

新问题的C语言实现如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值