我想要一个通用函数,可以对不同大小但相同数据类型的多个数组进行操作,并且仅将数组号作为参数。让我们考虑三个数组 arr1[10]
、arr2[15]
、arr3[20]
。通用函数应该是这样的:
void func(int array_number)
{
for(int i=0; i<y; i++)
{
arrz[i] = i;
}
}
这里的数组大小y
将根据arrz[i]
中的array_number
(参数)和z
来选择> 应该是 array_number
(func
的参数),以便 func
将数据放入相应的数组中。用c语言可以吗?
我知道一种解决方案是在函数调用期间发送一些数字作为参数以区分数组,但我实际上不想在 func
中使用 if-else 来避免冗长的代码。
最佳答案
您的函数需要了解每个数组并根据数字选择一个数组。如果您有少量固定数量的全局数组(如示例所示),则可以使用 switch
选择一个:
void func(int array_number)
{
int *arr;
int len, i;
switch (array_number) {
case 1:
arr = arr1;
len = sizeof(arr1) / sizeof(arr1[0]);
break;
case 2:
arr = arr2;
len = sizeof(arr2) / sizeof(arr2[0]);
break;
case 3:
arr = arr3;
len = sizeof(arr3) / sizeof(arr3[0]);
break;
default:
return;
}
for(int i=0; i<len; i++)
{
arr[i] = i;
}
}
当然,最灵活的做法是更改函数以获取数组(技术上指向第一个元素的指针)和长度。
void func(int *arr, int len)
{
for(int i=0; i<len; i++)
{
arr[i] = i;
}
}
关于c - c中相同数据类型的多个数组的通用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44803964/