c - 试图将对象传递给函数?

标签 c arrays

我正在尝试发送包含随机整数的数组(这是一个对象?)。我想将数组发送到 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();

ma​​in.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/

相关文章:

c - 信号量和同步中的段错误

c - 安全释放 XS 代码中的资源(在作用域退出时运行析构函数)

c - 将数据复制到链表中

java - 在 Java 中将整数四舍五入为特定整数

iphone - 解析 JSON Feed iOS 5

android - 如何获取文件夹中所有图像文件的名称?

c - 我的数据会在这个 mutex/pthread_cond_wait 结构中丢失在哪里?

c - 来自 `strsep` 的字符串标记未打印(段错误)

arrays - 如何将数组添加到字典?

arrays - 无法接收要建模的数组