2017-07-29 31 views
-1

如果我有一個函數計算數組的最小值和最大值,那麼在函數參數中包含最小值和最大值是一種不好的做法,所以我可以在函數運行時編輯它們。爲了在C壞習慣中返回多個值而使用多個函數參數?

所以我會void minmax(array, int min, int max)

最小和最大變量將作爲null發送和功能運行時得到改變。這將是好的,或者我應該使用malloc獲取數組並返回指針呢?

+0

https://stackoverflow.com/questions/3829167/returning-multiple-values-from-a-function –

+0

minmax()如何知道數組有多大?應該可能有另一個參數來指定數組中的條目數。 –

回答

3

問:如果我有一個計算陣列的最小值和最大值這將是不好的做法,包括在功能paramiters

最小和最大的功能:沒有,一點都沒有。這是一個完全合理的事情。

問: 「所以我會void minmax(array, int min, int max) ......」

答:哦,不。這不會將「min」和「max」傳回給調用者。相反,你需要這樣的:

void minman(int * array, int * min, int * max);'

例如:

int myarray[] = {1, 2, 3}; 
int min, max; 
minman(myarray, &min, &max); 
... 
1

這很好,除了你需要minmax作爲指針。如果他們只是普通的舊int就像你在那裏,調用者將永遠看不到你所做的改變。

1

函數通過參數返回值沒有任何問題。除非你寫的都不行代碼 - 改變這樣的:

void minmax(int *array, int *min, int *max) 

另見returning multiple values from a function

+0

如果答案是從「我不認爲...」這樣的聲明開始,那麼這個問題就像是太過於自責了。 – Olaf

+0

或者我的答案不應該以「我不這麼認爲」開始,而問題就沒有問題。 –

+0

@Olaf編輯我的答案,以消除任何疑問。 –