作者larkes (larkes)
看板C_and_CPP
標題Re: [問題] 如何讓多個指標指向同一個struct記憶區塊
時間Sun Apr 15 22:01:11 2012
謝謝各位的指教,
不好意思....我可以順便再問個新手的問題嗎?
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