C
問題(Question):
小的最近初學C語言
在寫程式時遇到了十分不理解的地方
希望有大大可以為小的指點迷津 謝謝
http://ideone.com/zAvKns
我覺得我在做和這個網頁的程式碼一樣的事
我希望我能在函式Y改變函式X傳入的struct內data的值
而這個程式碼顯示的結果也的確是傳入的task.t與task->t
記憶體位址相同&&值也成功的被改變了
http://ideone.com/Uul86Q
這是小的現在在寫的程式(未完成)
問題: 我在第265行的函式Display中宣告了Struct Player A
並在第331行將&A傳入函式Getcard (Getcard的接收型態為 Player *A)
但是問題來了
我這樣子的傳入1. 傳入後的 printf %p A->Case 與 傳入前的 printf %p &A.Case
記憶體位址不同 && 我在Getcard改變A->Case為1 但是在Display A.Case仍為0
想請問為什麼呢 ?
我以為我是在做和第一個網址的程式碼一樣的傳址法
但是當我實際在我想寫的程式裡使用時 傳入的址卻與原本的址不同&&無法直接對地址
裡的儲存值做改變(我希望在Getcard值的改變也會直接改變在Display的值)
http://tinyurl.com/lsb7yg6
此外還有一個小小的問題是我在程式碼第14-24行的宣告方式
(我要printf出牌組) 本來K後面是沒有" "的
我知道我的陣列宣告也只有13個(雖然現在compiler沒問題)
不知道為什麼
我的最後一張牌梅花K會printf不出來(printf出來K的地方會變成
我在很遠的地方的printf"Shuttle" 的Shuttle!)
感覺完全風馬牛不相關(剛剛測試不管有沒有多那個" " 都一樣)
(意思是原本printf應該是 梅花 K 卻變成 梅花 Shuttle!
請問為什麼會這樣呢?)
http://tinyurl.com/l449ogc
http://tinyurl.com/k354rxv
附圖說明~(只有最後一張梅花K會有圖1的結果 其他牌都正常)
謝謝大家~
初學者首po 如果有違反版規什麼的請告知...謝謝