Re: [問題] pointer能出的題目

看板C_and_CPP作者 (單身老王)時間10年前發表 (2015/04/11 19:12), 10年前編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/2 (看更多)
上學期 教C時 出題給學生 由於測驗是用 OnlineJudge 所以實在很難設計題目 後來我們想了一個題目 Input會要求學生在特定記憶體位置 賦值不同型別的資料 最後再把記憶體 以單Byte單位 逐個以int型別輸出資料 (結果一堆學生直接用Scanf來做…… 那時候算是礙於課程進度 還沒教Struct 所以我沒辦法指定自定型別來玩學生就是了 Function Pointer的難度 對某些學校的畢業生來說 已經算高了 如果考的是C++的話 可以考Memory Allocation的機制 例如Stack或Pool 可以提供Header File讓學生完成剩下的代碼 或者是考方提供Memory Allocator後 讓考生用placement-new初始化物件 由於C++的繼承機制 如果是子類別(Derived Class) 沒辦法直接用以下做法完成初始化 A* ptr {(A*)new char[sizeof(A)]}; *ptr = A(); 這種做法 會導致 virtual function 無法被正常呼叫 (virtual table根本沒有被初始化) 不過嚴格來說 這種題目 不是在考Pointer 而是在考C++常識 強迫學生去使用Placement new shared_ptr跟unique_ptr我覺得也可以考考看 ※ 引述《trytryit (EDISON)》之銘言: : 要出一個使用指標的題目 : 我自己原本出的太簡單了 : 只是指標函式,被退 : 想請問有沒有不錯的出題方向可以分享 : 需要一些題目情境,希望能給我點建議 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.241.165 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1428779540.A.DFD.html ※ 編輯: bachelorwhc (114.34.241.165), 04/12/2015 03:28:01

04/12 08:07, , 1F
即便沒有virtual,用*ptr=A()來初始化也容易出問題,例如當A
04/12 08:07, 1F

04/12 08:08, , 2F
內有成員是自定義struct或class的時候
04/12 08:08, 2F
文章代碼(AID): #1LAN8Ktz (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1LAN8Ktz (C_and_CPP)