我正在尝试发送包含随机整数的数组(这是一个对象?)。我想将数组发送到 sort() 以便对数组进行排序,但是当我将 array 解析为 sort() 我得到以下错误:错误:取消引用指向不完整类型的指针
。拜托,如果您要更改代码中的任何内容,请解释您在做什么以及为什么要这样做,因为我已经对代码现在的样子感到困惑。
不允许更改array.c或array.h中的代码,void_sort()的参数也不能更改。
数组.c
struct array {
int* data;
int size;
};
struct array* array_create()
{
struct array* array = (struct array*) malloc(sizeof(struct array));
array->data = (int*) malloc(sizeof(int) * 10000);
array->size = 10000;
return array;
}
数组.h
typedef struct array* ARRAY;
ARRAY array_create();
main.c
void sort (int A[], int N)
{
// Sort the array
}
ARRAY array;
array = array_create();
sort(array->data, 100); // This gives me error: dereferencing pointer to incomplete type
最佳答案
您需要将其从 array.c 移至 array.h:
struct array {
int* data;
int size;
};
那是因为这声明了数组类型。如果你不想这样做,你可以将它复制粘贴到 main.c 中,每个人都会讨厌你,但你将实现不修改 array.h 或 array.c 的目标。
关于c - 试图将对象传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21659600/