2016-03-11 42 views
0

我正在寫一個函數來返回數組的總和,但是我的測試用例顯示沒有來自該特定函數的輸出。任何人都可以幫忙使用指針返回數組的總和 - 無輸出

double sumArray(int n, double * array) { 
    // Add your code here 
    int i; 
    double sum = 0.000000; 
    double *ptr; 
    ptr = array; 
    if (n == 0) { 
     return 0.000000; 
    } else { 
     for (i = 0; i < n; i++) { 
      sum = sum + *ptr; 
      ptr++; 
     } 
     return sum; 
    } 
} 
+2

你應該在哪裏看到輸出? – Goodies

+3

[無法重現](http://melpon.org/wandbox/permlink/8Y18UimLE3e0TmCW)。請發佈具有所需行爲的[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – MikeCAT

+0

這是函數不應該打印任何東西,我們給出了測試用例,並且它沒有顯示這個函數的輸出。 –

回答

0

這是一個小清潔,更可讀(imo),更安全。

double sumArray(const double * const arr, size_t n) { 
    // promise the compiler that you won't change anything in the array or the pointer itself 
    // the size of an array should always be >= 0, so use a size_t 
    double sum = 0.0; 
    const double *ptr = arr; // create a const pointer and point it at the array 
    size_t i; // counter variable 
    for (i = 0; i < n; ++i) // iterate up to n 
     sum += *ptr++; // dereference ptr and increment it 
    return sum; 
} 


int main(int argc, char **argv) { 
    double arr[] = { 1.0, 1.5, 2.1 }; 
    printf("%f\n", sumArray(arr, sizeof(arr)/sizeof(double))); 
    return 0; 
}