[問題] 關於回傳值 與 改變參數 的問題
想問幾個關於 C 語言的問題
問題一:如果一個 function 的回傳值的型別不確定 有辦法宣告嗎?
例如:有兩個 function 定義如下
/** 計算一個物件的分數 */
int calculateScore(void *obj){
return scoreForAnswers(obj->answer1, obj->answer2); //有很多answers只列兩個
};
/** 針對答案進行分數計算 */
int scoreForAnswers(int answer, ...){
int score;
// 把 answer 計算加總然後 assign 給 score
return score;
};
今天我想插入一個 function call 在兩個 functions 之間:
/** 這個 function 可以接受任何 type 的 value 並把該 value 繼續回傳*/
unknown_return_type sideEffect(unknown_return_type value){
printf("This is side effect function");
return value;
}
/** 計算一個物件的分數,但多呼叫一個 sideEffect() */
int calculateScore(void *obj){
return sideEffect(scoreForAnswers(obj->answer1, obj->answer2));
};
==> 因此執行 calculateScore() 時,會順便執行 sideEffect function
// -----
請問 有辦法讓一個 function 吃一個未知 type 的變數 並將它回傳嗎?
// -----
問題二:有辦法把一個變數傳入一個沒有回傳值的 function 後,還能改變該變數嗎?
(解答):
int integer_not_greater_than_100(int *input){
if (*input > 100){
*input = 100;
return 1;
}
return 0;
}
void printIntValue(int value){
int hasChanged = integer_not_greater_than_100(&value);
printf("value: %d; hasChanged: %d", value, hasChanged);
}
int main (int argc, char * argv[] ) {
int value = 300;
printIntValue(value); // 會印出100
return 0;
};
==> 希望當 printIntValue() 輸入的值大於 100 時,只會列印 100
這兩個問題我一直想要去實踐,但是一直找不到方法
希望高手能幫忙
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.245.65.129
→
09/19 15:28, , 1F
09/19 15:28, 1F
推
09/19 15:29, , 2F
09/19 15:29, 2F
→
09/19 15:30, , 3F
09/19 15:30, 3F
→
09/19 15:36, , 4F
09/19 15:36, 4F
→
09/19 15:37, , 5F
09/19 15:37, 5F
→
09/19 15:38, , 6F
09/19 15:38, 6F
→
09/19 15:41, , 7F
09/19 15:41, 7F
→
09/19 15:42, , 8F
09/19 15:42, 8F
→
09/19 15:44, , 9F
09/19 15:44, 9F
→
09/19 16:13, , 10F
09/19 16:13, 10F
※ 編輯: leondemon 來自: 60.245.65.129 (09/19 16:26)
→
09/19 16:30, , 11F
09/19 16:30, 11F
推
09/19 19:34, , 12F
09/19 19:34, 12F
→
09/19 19:35, , 13F
09/19 19:35, 13F
→
09/19 22:33, , 14F
09/19 22:33, 14F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):