错误:下标值既不是数组也不是指针

时间:2017-02-05 05:31:54

标签: c

int get_first(int arr[],int count)
{

   int half = count / 2;

   int *firstHalf = malloc(half * sizeof(int));
   memcpy(firstHalf, arr, half * sizeof(int));
   return firstHalf;
}

int get_second(int arr[], int count)
{
    int half = count / 2;

    int *secondHalf = malloc(half * sizeof(int));
    memcpy(secondHalf, arr + half , half * sizeof(int));
    return secondHalf;
}

int result = get_first(arr, count);
int size = sizeof(result) / sizeof(result[0]);

我正在编写一个将数组拆分为两个相等部分的函数。该函数接受一个数组和数组的大小。我通过将数组的前半部分存储在结果中并打印其长度来测试该函数。但是当我构建函数时,行

int size = sizeof(result) / sizeof(result[0]);

给出错误说“错误:下标值既不是数组也不是指针”

是因为我的函数未能将数组的前半部分传递给结果吗?或者存储阵列的方式是错误的?如果是这样,我如何拆分数组,有人可以帮我修复它吗?提前致谢。

1 个答案:

答案 0 :(得分:0)

我可以看到两个问题:

  1. 在函数int get_first(int arr[],int count)int get_second(int arr[], int count)中,您返回int指针但函数' return类型为int。
  2. 结果声明为int,但您正在访问它,如result [0]。
  3. 从上面的第1点可以明显看出1的修正。 纠正2:

    而不是:

    int result = get_first(arr, count);
    

    你应该写:

    int *result = get_first(arr, count);
    

    希望这有帮助。