gpt4 book ai didi

c - 将任何数组类型传递给 C 中的函数

转载 作者:行者123 更新时间:2023-11-30 20:42:52 24 4
gpt4 key购买 nike

我正在尝试编写一个函数,对给定的任何数字数组进行排序。问题在于,由于其“指针性质”,C 需要知道数据类型才能正确迭代数组。有什么方法可以在不知道类型的情况下传递任何数组吗?也许使用 void 类型?

void ordenation (void *array, ...) {}

最佳答案

我是这样理解你的问题的,如果不是的话请在下面回复。您正在尝试在 C 中创建一个可以接受多种数值类型(float、int 等)数组的函数。

这称为函数重载。可以在 C11 中通过 _Generic 运算符来完成此操作。请参阅function overloading in C

另一种选择是创建具有不同名称的函数,并且所有函数都具有不同的参数列表。所以:

    void ordenation_i(int *array);
void ordenation_f(float *array);

另一种方法是使用 void* 类型。这意味着您可以将任何指针传递给它,但它可能不是您正在寻找的。您必须将 void* 转换回指向其他内容的指针,例如 float 。如果该操作失败,您可能会遇到问题。

    void ordenation(void *array){
float* array_casted = (float*) array;
// Do stuff
}

这段代码的问题是现在数组只能用作 float 组。

最后,您也可以只使用 C++ 编译器。它应该编译任何 C 代码,并且默认情况下您会获得函数重载。

    void ordenation(int array[]){
//do stuff
}

void ordenation(float array[]){
//do stuff
}

关于c - 将任何数组类型传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com