看板 Grad-ProbAsk 關於我們 聯絡資訊
各位前輩好,中正資工乙組計概的題目有含程式設計, 有補習,但非本科生,有找工程師的朋友問, 不過朋友們遠離這一塊比較久所以沒辦法給我比較詳細易懂的說明, 於是來這邊請教各位,請多多指教。 之後可能還會往前問前幾年的,總之先一步一步來。 相關題目內出現的語法都有先自己GOOGLE去理解,化成自己的想法, 還請糾正或是給予一點理解的技巧(?) 第一題: https://i.imgur.com/extW8nK.png
https://i.imgur.com/UrbrLuL.png
因為沒解答所以自己打了程式碼跑答案出來參考。 自己理解: 題目中宣告二維陣列,總共3X3, 由上而下由左而右,0列~2列,0行~2行,依序填入元素1~9 *ptr1輸出值為1,這個不太懂,指標變數不是指向記憶體位址嗎? 還是在這邊就變成了指向陣列的第一個元素,也就是1嗎? *(ptr1+LOC(1,1)) 1+4(陣列1x1之值)=5 ptr1[LOC(2,1)] 陣列2x1之值=8 ptr1[5]/5 陣列第五個元素除以5,5/5=1 後面的char就無法理解了... 第二題: https://i.imgur.com/47ASzyR.png
https://i.imgur.com/teRSMau.png
前半的函數呼叫是將兩值互換。 而後面主程式碼, X1=Y1位址 Y1=Z1位址 X2=Y2位址 Y2=Z2位址 所以第一次printf *y1就是z1的值10 *y2就是z2的值20 **x1跟**x2自己是理解成連續取兩次位址, 所以x1=y1=z1=10、x2=y2=z2=20 然後呼叫函數將兩值互換。 第三題: https://i.imgur.com/1aC6L3q.png
考的是記憶體漏洞跟記憶體釋放,第一次聽到,所以自己去GOOGLE。 a: (1) Ans:insert a free(ptr) immediately after L10 原因:已經printf結束了,所以就釋放記憶體避免造成記憶體漏洞。 (2) 不太確定,看起來是沒有問題? (3) 不太確定,是不是應該要把L12的free給移除掉? 因為還在迴圈內,在那邊free的話資料就遺失了。 b: garbage collection為程式會自動將被占用許久沒使用的記憶體給釋放的機制。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.236.239.198 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1605973322.A.8F1.html
cry589036511: ptr=address *ptr=vlaue 11/22 20:47
※ 編輯: lsd25968 (1.172.89.93 臺灣), 11/22/2020 21:34:14
TWkobe: 回這挺長的 我等下直接回你信箱比較快 11/24 22:12