結果顯示too few arguments to function 'su' 但是我參數都給了?。?/h1>
2 回答

TA貢獻1847條經驗 獲得超11個贊
形參和實參的個數沒有對應上。su函數定義了兩個參數,分別是int x和int i,但是在主函數調用的時候指只調用了一個x。
形參和實參的區別和聯系
1、形參變量只有在函數被調用時才會分配內存,調用結束后,立刻釋放內存,所以形參變量只有在函數內部有效,不能在函數外部使用。
2、實參可以是常量、變量、表達式、函數等,無論實參是何種類型的數據,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參,所以應該提前用賦值、輸入等辦法使實參獲得確定值。
3、實參和形參在數量上、類型上、順序上必須嚴格一致,否則會發生“類型不匹配”的錯誤。當然,如果能夠進行自動類型轉換,或者進行了強制類型轉換,那么實參類型也可以不同于形參類型。
4、函數調用中發生的數據傳遞是單向的,只能把實參的值傳遞給形參,而不能把形參的值反向地傳遞給實參;換句話說,一旦完成數據的傳遞,實參和形參就再也沒有瓜葛了,所以,在函數調用過程中,形參的值發生改變并不會影響實參。
擴展資料
函數調用的本質:
在執行調用一個函數:本質就是通過call指令調用函數在代碼段的地址進行直接調用。在匯編指令可以看到當函數執行完畢,執行ret匯編指令退出函數。其實一個完整的函數調用必定包含call和ret指令。
函數分類:
1、從用戶使用的角度看,函數有兩種,分別為系統函數和用戶自己定義的函數。系統函數又稱庫函數,是由編譯系統提供的,用戶不必自己定義這些函數,可以直接使用它們;用戶自己定義的函數是用于解決用戶的專門需要。
注:庫函數在使用時程序中必須包含相應的頭文件,如,#include《iostream》等。
2、從函數的形式看,函數又分為無參函數和有參函數。無參函數調用時不必給出參數,有參函數調用時要給出參數,在主調函數和被調函數之間有數據傳遞。

TA貢獻1946條經驗 獲得超4個贊
//你的su定義函數有兩個參數,但使用的時候只傳遞了一個x,當然too few了。
//你可以將i的定義放在su的內部,為什么用i作為參數呢??
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int su(int x)
{
if(x==0)
return 1;
else
{
int i;
for(i=2;x%i!=0 && i<=sqrt(x);i++); //這里分號。
if(i>sqrt(x))
return 1;
else
return 0;
}
}
//你的su定義函數有兩個參數,但使用的時候只傳遞了一個x,當然too few了。
//你可以將i的定義放在su的內部,為什么用i作為參數呢??
int main()
{
int x;
scanf("%d",&x);
if (su(x)==1)
printf("y");
if (su(x)==0)
printf("n");
return 0;
}
- 2 回答
- 0 關注
- 793 瀏覽
添加回答
舉報