2017-07-06 467 views
-4

傳遞參數1我有這樣的代碼,很簡單,這讓我對函數max(),當我把它從最新的printf錯誤:c - 從中​​兼容的指針類型

#include <stdio.h> 

float max(float v[], int n){ 
    float maxim = v[0]; 
    for(int i = 0; i < n; i++){ 
    if(maxim < v[i]){ 
     maxim = v[i]; 
    } 
    } 
    return maxim; 
} 

void main(){ 
    int v[10], n; 
    float x; 

    for(int i = 0; i < 10; i++){ 
    printf("Introduza %d de 10 números: ", i+1); 
    scanf(" %f", &x); 
    v[i] = x; 
    } 

    printf("Indique o número de elementos que pretende avaliar: "); 
    scanf(" %d", &n); 

    printf("O maior valor introduzido entre os %d primeiros números foi %f", n, max(v,n)); 
} 

文本是在葡萄牙語,但那並不重要。 錯誤:

warning: passing argument 1 of ‘max’ from incompatible pointer type [-Wincompatible-pointer-types] 

我看到一些線程,但我認爲這是不同的。有人能幫助我嗎?

+4

傳遞的'v'在'馬克斯(V,N)'是一個'int'數組,但'max'想要一個'float'陣列。 –

+0

所以nooby :(我怎麼會錯過這個?非常感謝 – MoonWalker

+1

因爲你正在給每個元素分配float x,所以你可能想'float v [10]'在'main'中。 –

回答

1

max(v,n)傳遞的vint數組,但max想要一個float陣列。

您還需要float v[10]main,因爲您正在爲每個元素分配float x

但我會使用double,除非有很好的理由你必須使用float

旁白:請注意,main應該

int main(void) 
+0

我正在使用float,因爲我正在做練習,它要求實現float max(float v [],int n),它接收一個實數的向量(不知道它是否是正確的項)的元素進行評估。它返回矢量前n箇中最大的數字。 – MoonWalker

+0

使用舊參考材料? –

+0

該書於2013年編輯,並於1999年首次編寫。是老學校材料:D – MoonWalker

0

更改此:

void main(){ 
    int v[10], n; 
    float x; 

要:

void main(){ 
    float v[10]; 
    int n; 
    float x; 
+0

'void main()'最好是'main()'的實現相關簽名。要符合標準,應該是'int main(void)'或'int main(int argc,char * argv [])'。 –