陣列主程式傳遞函式技巧(保留值標記陣列長度)

這次嘗試使用保留值標記陣列最後的一個位置,至於保留值為什麼數值都可以,只要確定此數值是在我們運用此陣列公所不會使用到的數值即可,此次練習用-1來當保留值。
#include<stdio.h>
int max(int[ ]);
int main(){
int n[]={26,69,86,38,5,-1};//運用最後一個-1值當作判斷陣列長度的保留值
int g[]={18,26,58,-1};//運用最後一個-1值當作判斷陣列長度的保留值
printf("n of max = %d\n",max(n));//直接傳遞陣列名稱
printf("g of max = %d\n",max(g));//直接傳遞陣列名稱
return 0;
}
int max(int v[ ]){ //直接接收主程式呼叫後傳遞的陣列。
int i=1,maxv=v[0];
while(v[i]!=-1){  //條件配合在陣列中最後一個位置的數值(成立則停止)
if(v[i]>maxv){
maxv=v[i];
}
++i;
}
return maxv;
//return i;//可回傳一共有幾個int(不含保留值),但已回傳maxv,此函式只能擇一
//return i+1;//可回傳一共有幾個int(含保留值),但已回傳maxv,此函式只能擇一
}

當函式回傳i時,在主程式列印時會出現陣列使用上一共多少(除去保留值),但如果要顯示或接收到完整的陣列長度,則須回傳i+1。

在最近幾次的練習與運用上再次強調,方法很多種,但能選擇出當下條件最合適的最好,當然也是要多學習以及思考才可以看的更多不同角度的處理方式。

留言