[問題] 請問如何用副函式回傳2個值(c語言)???

看板C_and_CPP作者時間16年前 (2009/10/30 16:14), 編輯推噓9(9014)
留言23則, 6人參與, 最新討論串1/1
void ShowHistogrm3( ) { int a,b; printf("請輸入第一個值:"); scanf("%d",&a); printf("請輸入第二個值:"); scanf("%d",&b); } 請問要怎麼把副函式的a b值皆回傳到主函式裡???? 可以幫忙改寫一下嗎? 困擾好久了> < -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.72.84.170

10/30 16:23, , 1F
參數列傳址呼叫
10/30 16:23, 1F

10/30 16:23, , 2F
void ShowHistogrm3(int* a, int *b)
10/30 16:23, 2F

10/30 16:27, , 3F
跟風請教一下h大, 對照 #1AwL0WS1 來看, 小弟有個疑問,
10/30 16:27, 3F

10/30 16:27, , 4F
什麼情況下我們像這樣傳address或reference, 什麼情況
10/30 16:27, 4F

10/30 16:28, , 5F
下用包裝return type的型式會比較好呢?? 還是全看設計@@
10/30 16:28, 5F

10/30 16:28, , 6F
看你function主要是做什麼啊..
10/30 16:28, 6F

10/30 16:29, , 7F
反正return就是要copy,傳address會有access overhead
10/30 16:29, 7F

10/30 16:30, , 8F
Effective C++裡面有一款就是在講類似的問題:在對的地方
10/30 16:30, 8F

10/30 16:30, , 9F
用對的設計,但不是絕對
10/30 16:30, 9F

10/30 16:32, , 10F
總之就是清楚掌握語言特性,就能了解各種寫法的優劣之處
10/30 16:32, 10F

10/30 16:32, , 11F
然後再根據需求加以選擇就是了
10/30 16:32, 11F

10/30 16:53, , 12F
謝謝h大!!!!!!問題已解決了^^
10/30 16:53, 12F

10/30 17:20, , 13F
h大所謂的access overhead是甚麼意思??
10/30 17:20, 13F

10/30 17:23, , 14F
是說存取pointer的間接取值嗎?
10/30 17:23, 14F

10/30 17:32, , 15F
會不會有種情況是 你function裡面 對那個pointer dereference
10/30 17:32, 15F

10/30 17:33, , 16F
過多次 變成寧可傳copy再return copy回去 反而比較有效率?
10/30 17:33, 16F

10/30 17:35, , 17F
struct
10/30 17:35, 17F

10/30 17:59, , 18F
如果是primitive type,這是有可能的
10/30 17:59, 18F

10/30 18:26, , 19F
為什麼說只針對 基本型態@@
10/30 18:26, 19F

10/30 18:31, , 20F
你認為 a->data 和b.data 各發生幾次dereference?
10/30 18:31, 20F

10/30 18:32, , 21F
一個物件的指標 和一個物件 對其data member的存取效率
10/30 18:32, 21F

10/30 18:32, , 22F
在很多情況下是相同的 除非你有虛擬繼承
10/30 18:32, 22F

10/30 18:38, , 23F
先謝謝h大, 小弟我努力消化一下....@_@"
10/30 18:38, 23F
文章代碼(AID): #1Awg1HUv (C_and_CPP)