Re: [問題] 關於回傳值 與 改變參數 的問題
※ 引述《leondemon (狗狗)》之銘言:
: 想問幾個關於 C 語言的問題
: 問題一:如果一個 function 的回傳值的型別不確定 有辦法宣告嗎?
我實作了一下 把問題列在下面的程式碼中...
// 這是我想在兩個 function 之間安插的 function
// 他會接受一個 unknown type 的值 並回傳一個 unknown type 的值
// 這個函式是有可能會依據傳入的值來修改回傳值
void* sideEffect(void *input){
printf("sideEffect\n");
// Question 1: 有辦法知道傳進來的 *input 原本是什麼型別嗎?
// 例如:若 input 為數字,則將其值乘以2
return input;
}
// 這是實際上會計算 score 的 function 目前先以回傳 99 示意
int score99(){
return 99;
}
// 這是外面呼叫的 function
int score(){
// 原本的實作是單純回傳 score99() 的值
// return score99();
// 現在是在回傳 score99() 之前,呼叫 sideEffect()
// sideEfffect 是有機會去改變傳入、傳出的值
// Question: 能否把下面兩行程式碼濃縮成一行?
// Question: 有辦法在return時不cast成 *(int *) 中的"int"嗎?
// 也就是希望能universal,若sideEffect傳入是float型別
// 回傳時就自動會cast成*(float*)
// sideEffect 傳入傳出都不檢查(或指定)型別
int someValue = score99();
return *(int *) sideEffect(&someValue);
}
int main (int argc, char * argv[] ) {
printf("score: %d\n", score());
return 0;
};
(console)
==> sideEffect
==> score: 99
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.245.65.129
※ 編輯: leondemon 來自: 60.245.65.129 (09/20 14:22)
→
09/20 14:26, , 1F
09/20 14:26, 1F
→
09/20 14:28, , 2F
09/20 14:28, 2F
→
09/20 14:45, , 3F
09/20 14:45, 3F
推
09/20 19:16, , 4F
09/20 19:16, 4F
→
09/20 19:17, , 5F
09/20 19:17, 5F
→
09/20 20:55, , 6F
09/20 20:55, 6F
→
09/20 20:55, , 7F
09/20 20:55, 7F
→
09/21 17:54, , 8F
09/21 17:54, 8F
→
09/21 18:45, , 9F
09/21 18:45, 9F
推
09/21 23:37, , 10F
09/21 23:37, 10F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):