作者lsd25968 (cookie)
看板Grad-ProbAsk
标题[理工] 109 中正资工 乙组 计概
时间Sat Nov 21 23:42:00 2020
各位前辈好,中正资工乙组计概的题目有含程式设计,
有补习,但非本科生,有找工程师的朋友问,
不过朋友们远离这一块比较久所以没办法给我比较详细易懂的说明,
於是来这边请教各位,请多多指教。
之後可能还会往前问前几年的,总之先一步一步来。
相关题目内出现的语法都有先自己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://webptt.com/cn.aspx?n=bbs/Grad-ProbAsk/M.1605973322.A.8F1.html
1F:推 cry589036511: ptr=address *ptr=vlaue 11/22 20:47
※ 编辑: lsd25968 (1.172.89.93 台湾), 11/22/2020 21:34:14
2F:推 TWkobe: 回这挺长的 我等下直接回你信箱比较快 11/24 22:12