看板 C_and_CPP 關於我們 聯絡資訊
謝謝各位的指教, 不好意思....我可以順便再問個新手的問題嗎? malloc傳回的是pointer, 那...為什麼要幫struct配置記憶區塊, 不能用下列的方式呢? struct list *second; *second = malloc(sizeof(struct list)); 還麻煩不吝惜指教, 謝謝~ ※ 引述《larkes (larkes)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : C語言, editor是Dev C++ : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : stdio.h stdlib,h : 問題(Question): : struct list *first = NULL; : struct list *second = NULL; : first = second; : second = (struct list *)malloc(sizeof(struct list)); : second->next = NULL; : if(first == NULL) : printf("first is NULL \n"); : 執行結果是:first is NULL : 從這可以看出first只是擁有跟second一模一樣的內容, : 但是卻沒有跟second共用一個記憶區塊. : 請問....如何在不使用function的情況下, : 撰寫code,讓first跟second共用一個記憶區塊呢? : 因為我希望second被修改時, first也跟著被修改. : 預期的正確結果(Expected Output): : first跟second指向同一個記憶區塊. : 還麻煩請指教一下, : 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.179.172
kdjf:你是想打struct list second; 嗎? 04/15 22:05
larkes:喔 我修改一下 04/15 22:05
※ 編輯: larkes 來自: 59.120.179.172 (04/15 22:06)
kdjf:上面少了一個*.., *second=xxx會吧東西寫到不知到什麼地方去 04/15 22:09
firejox:logical 04/15 22:38
xcode:malloc是配置在heap,struct變數是配置在stack 04/16 00:21
xcode:stack有大小上限,如果你的linked-list存放大量資料... 04/16 00:23
xcode:為了避免stack overflow... 就會配置在heap。 04/16 00:25
danielsig727:第一行 second 的型態是 (struct list)* (一個指標) 04/16 08:30
danielsig727:第2行用 *second 的話意義就變成second指向的地方了 04/16 08:31
danielsig727:所以你打第2行的意思是把malloc回傳的東西放在second 04/16 08:32
danielsig727:所指的地方,不過*second應該是一個 struct list 呀 04/16 08:33
danielsig727:(你在第1行宣告的),所以第2行最前面不應有星號(*) 04/16 08:35
larkes:謝謝各位的指教~~ 04/17 00:28