當前位置:外匯行情大全網 - 外匯開戶 - MT4編程:如何將函數返回到數組?

MT4編程:如何將函數返回到數組?

方法1:利用全局變量分析:作為C語言的壹個知識點,雖然我們都知道它的特點,但是全局變量在實際的教學過程中並沒有得到廣泛的應用。因為全局變量的作用域是從定義變量開始到程序結束,所以編寫有多個返回值的C語言函數,可以考慮定義多個要返回的值作為全局變量。當函數被調用時,全局變量被改變,然後我們將改變後的全局變量值應用於主音函數。函數被調用後改變的全局變量值是函數的幾個返回值。通過實例說明了該方法的應用。例1:寫壹個函數求三個數的最大值和最小值。方法:將最大值和最小值分別定義為兩個全局變量max和min,在自定義函數中將最大值和最小值分別賦給全局變量max和min。在函數調用之後,全局變量的最大值和最小值保存函數需要返回的值。程序參考代碼如下:# include " stdio . h " # include " conio . h " int max,min/*定義兩個全局變量存儲函數返回值*/Voidmax _ min (INTA,INTB,INTC)/*定義求最大值和最小值的函數*/{ max = min = a;/*初始化最大值和最小值*/if(maxif(maxif(min >;b)min = b;if(min & gt;c)min = c;}main(){intx,y,z;Printf("請輸入3個整數:\ n ");scanf("%d,%d,%d ",& ampx & amp;y & amp;z);max_min(x,y,z);/*調用求最大值和最小值的函數*/printf("三個數中最大值是:% d;最小值是%d”,最大值,最小值);/*輸出最大和最小值*/getch();調試結果如下:請輸入三個整數:5,-6,2,最大值為:5;最小值為:-6註意:雖然這種方法可以實現有多個返回值的函數,但是要謹慎使用,因為全局變量不能保證值的正確性(因為它們的作用域是全局的,它們的值可以在程序的作用域內修改,如果有錯誤會很難發現),全局變量增加了程序中模塊之間的耦合性。方法二:傳遞數組指針分析:在教學過程中,我們知道C語言中函數參數的傳遞方法有值傳遞和地址傳遞。在傳遞值時,主調函數將實參數的值復制到形參數,形參數獲取主調函數傳遞的值來運行函數。在值傳遞過程中被調用函數的參數值的變化不能導致實際參數值的變化。但在地址傳遞的情況下,由於在傳遞過程中地址是從實參傳遞過來的,所以被調用函數中形參值的變化會直接導致實參值的變化。所以可以考慮將多個返回值以數組的形式定義為數組元素,將數組的地址作為函數的形參來按地址傳遞數組參數。函數被調用後,形參組元素的變化導致實參的變化,然後我們從變化後的實參數組元素中得到函數的多個返回值。下面的例子演示了這種方法的應用。例2:寫壹個函數求壹維整數數組的最大值和最小值,將最大值和最小值返回給主tone函數。方法:用指針傳遞壹維數組的地址,然後用數組的第壹個元素交換數組的最大值,用數組的最後壹個元素交換數組的最小值。函數被調用後,自變量數組中的第壹個元素是數組的最大值,自變量數組中的最後壹個元素是數組的最小值,從而實現返回數組最大值和最小值的功能。程序參考代碼如下:# include " stdio . h " # include " conio . h " void max _ min(int * ptr,intn)/*定義查找數組最大最小值的函數,傳遞數組指針*/{inti,j,k;/*j保存最大值的位置,k保存最小值的位置*/int * temp;/*用於交換頭寸*/* temp = * ptr;for(I = 0;I{if(*ptr*(ptr+i))/*最小值與最後壹個元素交換*/{ j = I;* temp = *(ptr+n-1);*(ptr+n-1)= *(ptr+j);*(ptr+j)= * temp;}}}/*調用max-min函數*/main(){intA[6],I;for(I = 0;我& lt6;i++)scanf("%d ",& ampa[I]);max_min(A,6);printf("max=%d,min=%d\n\n ",A[0],A[5]);getch();}調試結果如下:請輸入6個整數,用空格隔開:58932-64max=32,min=-6註意:該方法適用於多個返回值的數據類型壹致的情況。當返回值的數據類型不壹致時,此方法不適用。
  • 上一篇:MBA都需要學習哪些課程
  • 下一篇:外匯交易中K線圖是什麽?外匯K線有什麽優缺點
  • copyright 2024外匯行情大全網