看板 C_and_CPP 關於我們 聯絡資訊
各位前輩大家好 小弟這兩天在自學遇到一些問題麻煩想請教版上高手 小弟用Dev c++ 練習 程式碼如網址http://codepad.org/gJOLUkJB 我覺得我有點搞混call by value跟 call by pointer了 關於第16行的 ListNodePtr startPtr=NULL; 我想請問一下應該是指向NULL還是指向struct,感覺我有點搞混了 我一直覺得是指向NULL長這樣startPtr ---> NULL但書裡又說指向節點結構 在第36行及37行 printf("\n(1)newPtr= %x\n",&newPtr); printf("\n(2)newPtr= %x\n",newPtr); 36行是以16進位的方式printf這個newPtr的address在這裡得到22fd8 想請問37行printf出來的數值是547cb0 請問這是什麼東西呢? 小弟在想是因為這樣嗎? http://imgur.com/z71oEEY (好像因為電腦不同記憶體位置不同) 然後想請問一下如果我畫的是對的,阿圖中上面的方塊是那個東西的實體阿.... 因為假設 char a=NULL; char *aPtr=&a; 所以會長 http://imgur.com/fNixO2n 假設我今天鍵入的是一個b 第57行跟第58行差異在一個是以字串的形式輸出,一個是以字元的形式 printf("\n(3)*sPtr= %s\n",*sPtr); printf("\n(4)*sPtr= %c\n",*sPtr); 但是為什麼以字串的形式可以得到我鍵入的b 但是字元的形式輸出卻會得到?或是奇怪的符號 麻煩各位前輩幫我解釋一下了 萬分感謝各位前輩!!謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.36.104 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1460557464.A.9DB.html ※ 編輯: sbk8027 (1.164.36.104), 04/13/2016 22:44:47
kwpn: *sPtr不是字串也不是字元,你想看字元應該是data吧 04/13 23:32
CaptainH: 沒有call by pointer這種東西 04/13 23:36
ronin728: 36行那是newPtr本身的位置,37行那是newPtr所指向物件的 04/14 00:05
ronin728: 位置。是說,才兩天直接上Linked list會不會太快? XD 04/14 00:06
ronin728: 指向NULL代表這個節點後沒有串接節點 04/14 00:06
ronin728: 設成別的Node的pointer才代表掛上去 04/14 00:07
ronin728: 你會問這些問題代表你Pointer很不熟,建議往回看看 04/14 00:09
ko27tye: 你的code我怎麼跑 輸出都只有? 04/14 00:24
ko27tye: startptr一開始指向NULL 後來會經由insert函式指向struct 04/14 00:32
ko27tye: 我大概知道你問題在哪了 typedef ListNode *ListNodePtr 04/14 00:59
ko27tye: ListNodePtr已經是指標了 insert的參數列用 04/14 01:00
ko27tye: ListNodePtr *sPtr 變成指向指標的指標 04/14 01:01
ko27tye: 你很多地方都多加一顆* 然後printf的問題我不清楚, 04/14 01:05
ko27tye: 但我改用cout可以正常輸出 04/14 01:05
ronin728: 是說用上double pointer,其實個小花招 04/14 02:18
longlongint: 想成填表格會不會比較簡單? 04/14 02:57
Frozenmouse: 照你的insert函式設計邏輯來說,一開始16行指向NULL 04/14 04:28
Frozenmouse: 表示該LinkedListPtr代表一空List 04/14 04:28
Frozenmouse: 一開始看別人上課講義也有這樣設計,腦袋也轉不太過 04/14 04:32
Frozenmouse: 來XD 我比較習慣不把NULL當List看待的設計 04/14 04:32
Frozenmouse: 36,37行一個是newPtr的址,一個是newPtr的值,而指標 04/14 04:35
Frozenmouse: 的值就是位址 04/14 04:35
Frozenmouse: 這也是為何我們說沒有call-by-pointer這回事,全部都 04/14 04:36
Frozenmouse: 是value 04/14 04:36
Frozenmouse: 57,58行想把串列指標當字串或字元輸入是不是搞錯什麼 04/14 04:39
Frozenmouse: *輸出 04/14 04:39