注册 登录
编程论坛 C语言论坛

请问一下这是为什么啊,说error C2040: “twoSum”:“int *(int *,int,int,int *)”与“int ()”的间接寻址级别不同

学院路大宝贝 发布于 2020-03-27 11:03, 2619 次点击
程序代码:
main(){
    int nums[] = {2,7,11,15};
    int target = 9;
    int nsize = 4;
    int *rs;
    int *x;
    x = twoSum(nums,nsize,target,rs);
   
   
}
////////////////////////////////////////main
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    int *a = (int *)malloc(sizeof(int) * 2);
    int i, j;
    for (i = 0; i < numsSize - 1; i++) {
        for (j = i + 1; j < numsSize; j++) {
            if (nums[i] + nums[j] == target) {
                a[0] = i;
                a[1] = j;
                *returnSize = 2;
                return a;
            }
        }
    }               
    *returnSize = 0;
    return a;
}
4 回复
#2
lin51616782020-03-27 11:05
先声明 再调用
#3
forever742020-03-27 11:24
没有声明的函数一般会被隐式声明为int型,和实际情况不符,于是就这样了。
#4
学院路大宝贝2020-03-27 11:24
回复 2楼 lin5161678
我草,我竟然忘了这个一着急,谢谢哥哥!!!!!!!!1
#5
学院路大宝贝2020-03-27 11:25
回复 3楼 forever74
谢谢哥哥,我知道了
1