C 函数和强制转换警告的类型冲突?
我相信对于有c语言指针经验的人来说,这是一个简单的答案,但我现在很难看到我的错误。我得到一个警告,来自函数的返回调用从整数生成指针,即使函数的返回类型是指针。并获取函数具有冲突类型的错误。这是代码,我已经删除了函数体,但仍然得到了错误和警告C 函数和强制转换警告的类型冲突?,c,pointers,C,Pointers,我相信对于有c语言指针经验的人来说,这是一个简单的答案,但我现在很难看到我的错误。我得到一个警告,来自函数的返回调用从整数生成指针,即使函数的返回类型是指针。并获取函数具有冲突类型的错误。这是代码,我已经删除了函数体,但仍然得到了错误和警告 long long *merge_sort(long long * arr, int size){ // Arrays shorter than 1 are already sorted if(size > 1){ int middle = s
long long *merge_sort(long long * arr, int size){
// Arrays shorter than 1 are already sorted
if(size > 1){
int middle = size / 2, i;
long long *left, *right;
left = arr;
right = arr + middle;
left = merge_sort(left, middle);
right = merge_sort(right, size-middle);
return merge(left,right);
}else { return arr; }
}
long long *merge(long long * left, long long * right){
}
您需要在上面声明您的函数
merge
merge\u sort
;当编译器看到对尚未声明的函数的调用时,它会自动假定它返回一个int
:
// forward declaration
long long *merge(long long * left, long long * right);
long long *merge_sort(long long * arr, int size){
// Arrays shorter than 1 are already sorted
if(size > 1){
int middle = size / 2, i;
long long *left, *right;
left = arr;
right = arr + middle;
left = merge_sort(left, middle);
right = merge_sort(right, size-middle);
return merge(left,right);
}else { return arr; }
}
long long *merge(long long * left, long long * right){
}