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]);
给出错误说“错误:下标值既不是数组也不是指针”
是因为我的函数未能将数组的前半部分传递给结果吗?或者存储阵列的方式是错误的?如果是这样,我如何拆分数组,有人可以帮我修复它吗?提前致谢。
答案 0 :(得分:0)
我可以看到两个问题:
int get_first(int arr[],int count)
和int get_second(int arr[], int count)
中,您返回int指针但函数' return类型为int。从上面的第1点可以明显看出1的修正。 纠正2:
而不是:
int result = get_first(arr, count);
你应该写:
int *result = get_first(arr, count);
希望这有帮助。