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 如果有违反版规什么的请告知...谢谢