Error: making pointer from integer in C

Error: making pointer from integer in C

我正在尝试编写一个 c 程序,它将以并行方式检查随机向量是否已排序。

 int isSorted(int size, int array[]) {

 .........
  int *sub_rand_nums = (int *)malloc(sizeof(int) * num_elements_per_proc);

  int orden = isSorted(num_elements_per_proc, sub_rand_nums);

// Gather all partial results to all the processes

  int *sub_ordens = NULL;
  if (my_rank == 0) {
    int  *sub_ordens = (int *)malloc(sizeof(int) * my_size);
  }

if (a == 0) {
    int orden = isSorted(sub_ordens, my_size);
  }




}

有人可以帮助解决我的代码问题吗?它给了我

的错误
passing argument 1 of ‘isSorted’ makes integer from pointer without a cast [-Wint-conversion]
      orden = isSorted(sub_ordens, my_size);

passing argument 2 of ‘isSorted’ makes pointer from integer without a cast [-Wint-conversion]
      orden = isSorted(sub_ordens, my_size);

您声明了 int isSorted(int size, int array[]),这表示第一个参数是一个整数。尽管稍后在代码中您指定 int *sub_ordens = NULL; 来指向一个整数,但它本身并不是一个整数。要修复第一个错误,您需要将整数而不是指向整数的指针传递给 isSorted()。

至于第二个错误,你做了与第一个错误相反的事情。 int array[] 就像说 int *array 但你传递的 int my_size; 是一个整数,而不是指向整数的指针。

抛开技术方面的问题,让我们将其视为更具体的东西。你有两个人,我们称他们为 A 和 B。A 拿着一张卡片,上面有一个数字,B 指向 A,但是 B 并不知道卡片上写的数字。如果函数需要一个指针,那么你会寻找 B,但如果它想要数字本身,你会寻找 A。

你的函数要求一个数字(A 人)作为第一个参数,一个指针作为第二个参数(B 人)。

以后如果你的代码在表述上统一一点(spacing/style),并且去掉与题目没有直接关系的部分,会更容易整理。