任何类型变量的数字数组

时间:2017-07-24 13:35:07

标签: c arrays function types

获取数字数组(未知类型)的函数,并在每个单元格中创建另一个累积数字和数组,只要总和为正数。 如何为任何类型的变量执行此功能? (INT,双,长,短,浮动..)

1 个答案:

答案 0 :(得分:1)

为简单起见,我展示的功能只是添加两个数字。我假设您在编写对数组进行操作的函数时不会遇到问题。

使用C ++,你可以使用这样的模板(只是在这里展示它来演示应该实现的目标):

caption

这将为所需的任何类型创建一个真实的动作,所以这里将从该模板创建一个函数处理#include <iostream> using namespace std; template<typename T> T sum(T a, T b) { return a + b; } int main(void) { long a = 5; long b = 37; long c = sum(a, b); cout << c << endl; }

您可以使用通用选择在C中实现类似的“呼叫舒适度”,但仍然要求您提供应处理的任何类型的实际函数,如下所示:

long

这仅使用#include <stdio.h> static int sum__int(int a, int b) { return a + b; } static long sum__long(long a, long b) { return a + b; } static double sum__double(double a, double b) { return a + b; } #define sum(a, b) _Generic((a), \ int: sum__int, \ long: sum__long, \ double: sum__double \ )((a), (b)) int main(void) { long a = 5; long b = 37; long c = sum(a, b); printf("%ld\n", c); } ,其他功能在这个小例子中未使用。如果这让你烦恼,那么这就是C ++更适合这项工作的例子之一。

你应该注意到这个答案没有显示泛型函数 (这是我从你理解你想要的问题的方式)。 C中没有这样的概念。为每种数据类型提供一个函数。即使在介绍性的C ++示例中,每种数据类型也会有一个函数,C ++模板只是根据需要管理创建这些函数。如果您需要真正的泛型函数,则必须选择完全不同的语言(例如Java或C#)。