我有必須返回兩個值
return(&ptr->keys[pos].value)
return Duplicate;
這裏& ptr->密鑰的函數[POS]。價值會給地址和Duplicate是一個枚舉值設置爲2 ...如何將這兩個值返回給另一個函數,insert_front是一個鏈接編輯列表& ptr-> keys [pos] .value用作鏈接列表的第一個地址。 應該寫什麼調用函數的原型?
我有必須返回兩個值
return(&ptr->keys[pos].value)
return Duplicate;
這裏& ptr->密鑰的函數[POS]。價值會給地址和Duplicate是一個枚舉值設置爲2 ...如何將這兩個值返回給另一個函數,insert_front是一個鏈接編輯列表& ptr-> keys [pos] .value用作鏈接列表的第一個地址。 應該寫什麼調用函數的原型?
您只能從函數返回一件東西。你可以創建一個包含你想要返回的所有東西的結構,或者你通過引用傳遞一些函數參數。
您不能返回兩個值。但是,您可以返回一個包含兩個值的結構的單個值。
要返回兩個值,您必須定義某種結構來保存這兩個值,並返回該結構的一個實例。或者,您可以將一個或兩個地址傳遞給該函數,並將其寫入該函數中。
像這樣:
typedef ret {
int val1;
int *val2;
} ret_t ;
// make sure to remember to free the struct when you're done with it
ret_t *myFunc(void) {
ret_t *r = malloc(sizeof(ret_t));
r->val1 = 1;
r->val2 = &r.val1;
return r;
}
// You can also return a copy of the struct on the stack
ret_t myFunc(void) {
ret_t r;
r.val1 = 1;
r.val2 = &r.val1;
return r;
}
不,你不能有一個函數的兩個返回後,第一回將退出,你需要創建一個對象的功能。注意:我很久沒有用C語言編寫代碼了,所以這裏的語法可能是關閉的。
public class link{
private int& ptr;
private int Duplicate;
public constructor link() {}
public setPtr(int& ptr) {
this->&ptr = ptr;
}
//set duplicate function
//get ptr function
//get duplicate function
}
和在你片斷你張貼之前創建的設定值所需的鏈接對象,然後返回(鏈接對象)的功能;
羅伯特的代碼是正確的。但是,您/可/也使用結構沒有malloc的,就像這樣:
struct retstruct {
int a;
int b;
};
struct retstruct myfunc(void) {
struct retstruct r;
r.a = 1;
r.b = 2;
return r;
}
int main()
{
struct retstruct r;
r = myfunc();
printf("a=%d b=%d\n", r.a, r.b);
}
這通常是避之唯恐不及,因爲它通常是一個有點更加昂貴(性能明智)路過周圍像這樣結構,但如果你只需要像這樣的一對值就足夠了。
在C/C++中,函數不能返回兩個值。但是,大多數情況下,這個限制實際上是有意義的:在任何複雜函數中,您都想更新一些數據(一堆變量,一個數組等),並返回函數的狀態,即它是成功還是不。其結果是,一個好的做法是,在這個例子中返回功能的狀態,並使用(在C++)或引用指針(C語言)來修改你的論點,就像在C:
int swap(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
return 0;
}
中當然,這個功能太簡單失敗(在某種程度上),但你的想法:P
然後,如果你真的希望你的函數返回2倍的值,那麼你可以使用所提出的所有招數其他答覆者。
Peter Minchev的回答是正確的。你的將只返回第一條語句;遇到「返回」時,退出該功能。 – Hut8 2011-02-28 07:05:57