代碼如下:Return an array of size *returnSize.Note: The returned array must be malloced, assume caller calls free()./int twoSum(int* numbers, int numbersSize, int target, int* returnSize) {int i=0;int j=numbersSize-1;while(numbers[i]+numbers[j]!=target){if(numbers[i]+numbers[j]>target){j=j-1;}else{i=i+1;}}returnSize[0]=i+1;returnSize[1]=j+1;return returnSize;}運行的時候出不來結果啊,請問這是為什么,我該怎么改呢?
1 回答

波斯汪
TA貢獻1811條經驗 獲得超4個贊
不考慮你程序本身的對錯,僅僅從輸入輸出的角度來說,你返回的是結果數組的指針,而returnsize的作用是返回,告知調用者結果數組的大小
/* Return an array of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */ int* twoSum(int* numbers, int numbersSize, int target, int * returnSize) { int i=0; int j=numbersSize-1; while(numbers[i]+numbers[j]!=target) { if(numbers[i]+numbers[j]>target) { j=j-1; } else { i=i+1; } } *returnSize = 2; int * r = new int[2]; r[0]=i+1; r[1]=j+1; return r; } int _tmain(int argc, _TCHAR* argv[]) { int a[] = {2,7,15,9}; int t = 9; int rs; int * r = twoSum(a, 4, t, &rs); for (int i = 0; i < rs; i++) printf("%d ", r[i]); return 0; }
應該是這么一個邏輯
- 1 回答
- 0 關注
- 2354 瀏覽
添加回答
舉報
0/150
提交
取消