[理工] 109 中正資工 乙組 計概

看板Grad-ProbAsk作者 (cookie)時間3年前 (2020/11/21 23:42), 3年前編輯推噓1(100)
留言1則, 1人參與, 3年前最新討論串1/1
各位前輩好,中正資工乙組計概的題目有含程式設計, 有補習,但非本科生,有找工程師的朋友問, 不過朋友們遠離這一塊比較久所以沒辦法給我比較詳細易懂的說明, 於是來這邊請教各位,請多多指教。 之後可能還會往前問前幾年的,總之先一步一步來。 相關題目內出現的語法都有先自己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

11/22 20:47, 3年前 , 1F
ptr=address *ptr=vlaue
11/22 20:47, 1F
※ 編輯: lsd25968 (1.172.89.93 臺灣), 11/22/2020 21:34:14
文章代碼(AID): #1VkJLAZn (Grad-ProbAsk)