關於數組自定義函數的關鍵點


這幾天呢,寫了點帶有數組的自定義函數。

發現有幾個需要注意的地方。即參數問題。

先解釋一下,參數易班分兩類:形參,實參。

實參(argument):
  全稱為"實際參數"是在調用時傳遞給函數的參數. 實參可以是常量、變量、表達式、函數等, 無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應預先用賦值,輸入等辦法使實參獲得確定值。      
形參(parameter):
全稱為"形式參數" 由於它不是實際存在變量,所以又稱虛擬變量。是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳入的參數.在調用函數時,實參將賦值給形參。因而,必須注意實參的個數,類型應與形參一一對應,並且實參必須要有確定的值。
 
 

形式參數:形參是函數被調用時用於接收實參值的變量。

根據實際需要可有可無。沒有形參時,圓括號也不可省;多個參數之間應用逗號分隔。參數包括參數名和參數類型。

(轉載自:https://blog.csdn.net/qq_33187168/article/details/50346465)(里面有詳細的分析與解釋。懂的就不用去看了。)

現在進去正題:注意事項。數組參數的引入,即在對函數調用是講數組引入時的格式問題。

這里、以自己編寫的一個在一個固定長度的數組中尋找最大值的簡單函數為例解釋。

先看函數體:

int max(int q[], int x)
{
int a;
int max = q[0];
for (a = 1; a < x; a++)
{
if (q[a] > max)
max = q[a];
}
return max;
}
可以看到,我在編輯形參時沒有寫入數組的長度
可以這樣想:我們要引入數組,與此同時數組的名字是未知的,數組的長度也是未知的。即這里的數組形參會涉及兩個變量
1:數組的名字,這里是int型所有寫了:int q[]
2:數組的長度因為長度是整形,所以用int x
現在看函數調用的例句:
s = max(q, 3);
可以看到這里調用時引入了兩個變量:q(程序前面定義的數組名),3(數組長度)
即會把前面的q當做max函數中的數組名,3當做x即數組長度進行運算。
這里要注意的就是引入是要按函數頭上自己定義是的順序一一對應。
否則會無法編譯。
現在看完整代碼。
說到完整代碼又要多說點東西了。
函數體的位置安放
先看第一種:
#include<stdio.h>
int max(int q[], int x)
{
int a;
int max = q[0];
for (a = 1; a < x; a++)
{
if (q[a] > max)
max = q[a];
}
return max;
}
int main()
{
int q[3];
int s;
for (s = 0; s < 3; s++)
{
scanf("%d", &q[s]);
}
s = max(q, 3);
printf("%d\n", s);
return 0;
}
函數體在int main()上面。
即你在使用該函數之前就要先進行定義
即先定義,后使用。
否則會報錯,當然有的編譯器在你放后面時不會報錯,會給你一個warning,但也會影響代碼的可讀性。
不過該有一種方法可以不用吧函數體放在最前面:
先進性聲明:即先告訴電腦我在后面定義了一個程序,一面計算機誤解導致編譯出錯。
#include<stdio.h>
int max(int q[], int x);//函數聲明
int main()
{
int q[3];
int s;
for (s = 0; s < 3; s++)
{
scanf("%d", &q[s]);
}
s = max(q, 3);
printf("%d\n", s);
return 0;
}
int max(int q[], int x)
{
int a;
int max = q[0];
for (a = 1; a < x; a++)
{
if (q[a] > max)
max = q[a];
}
return max;
}
可見:在前面先進性聲明為另一種格式。

 

 

 此為編譯及試運行結果
OK由於本人才疏學淺,這次就寫到這里,
后期會繼續學習,持續更新。
謝謝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM