線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1240
推到 Plurk!
推到 Facebook!

關於pointer問題

尚未結案
xenz
一般會員


發表:8
回覆:7
積分:3
註冊:2004-02-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-21 21:43:14 IP:219.93.xxx.xxx 未訂閱
char string[]="Input an integer"; char *p1; p1=string; ShowMessage(p1); ShowMessage(string); 我看書上說p1是指向string的記憶體位址, 不會佔用記憶體.. 但是我還是不太清楚幾個問題, 希望各位前輩能夠幫忙 1. 既然string可以取得相同的值, 為何我們還要使用pointer指向記憶體位址...這樣到底pl最終的用途是在哪? 2. 那麼我們要怎麼判斷什麼時候使用pointer呢?
seaturn99
版主


發表:69
回覆:427
積分:214
註冊:2003-08-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-21 23:33:05 IP:211.76.xxx.xxx 未訂閱
引言: char string[]="Input an integer"; char *p1; p1=string; ShowMessage(p1); ShowMessage(string); 我看書上說p1是指向string的記憶體位址, 不會佔用記憶體.. 但是我還是不太清楚幾個問題, 希望各位前輩能夠幫忙 1. 既然string可以取得相同的值, 為何我們還要使用pointer指向記憶體位址...這樣到底pl最終的用途是在哪? 2. 那麼我們要怎麼判斷什麼時候使用pointer呢?
xenz 您好 宣告 pointer (EX: char *p1) 還是有佔記憶體空間,您可以用 sizeof 查到大小,此記憶體空間是紀錄 Address 的 .. p1=string 是將 string[] 這個陣列的 Address 傳給 p1 , 此時 p1 與 string[] 相同 (您可以試看看改變 p1 的值) 1. 您的例子太淺顯,所以看不出 pointer 的威力,pointer 的用途一言難盡.. 2. pointer 是相當有威力的,舉個常會用到 pointer 的地方,如 Link List ... 或是建 Tree ,使用 pointer 都相當方便 .. ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ----
johnjohn
一般會員


發表:6
回覆:59
積分:13
註冊:2004-04-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-21 23:59:57 IP:203.70.xxx.xxx 未訂閱
xenz 你好: 當你宣告了一個指標變數時,如你所宣告的 >>
xenz
一般會員


發表:8
回覆:7
積分:3
註冊:2004-02-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-22 11:28:08 IP:219.93.xxx.xxx 未訂閱
喔...謝謝兩位 SouthWind: 因為我才開始學習當中, 所以還沒有接觸到深入的pointer例子.. 所以不知道什麼List和Tree的用法.. :p johnjohn: "欲傳遞某一變數的記憶體位置給函式的參數時,函式的參數若為指標變數,則可於函式中更改該記憶體位置內所存放的數值" 那麼請問這樣更改指標和直接更改變數... 有什麼不同呢, 直接更改變數不是更快嗎??
johnjohn
一般會員


發表:6
回覆:59
積分:13
註冊:2004-04-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-23 16:47:47 IP:210.244.xxx.xxx 未訂閱
除非你想更改的變數是屬於全域變數(global variable),否則,"傳呼叫"是不能更改那個""的,而必須以傳址的方式進行‧因此,你當然需要、必須使用指標囉! 事實上,指標的應用及功用真的太多了.舉一個簡單的例子,試想你要寫一個二分樹的程式,若你想完全不使用指標,你知道這個程式會變成怎樣嗎....? 他會變成一個又臭又長又醜陋的程式,相信我,因為我真的有試過‧這樣做,真的一點也不好玩... >>SPATIAL INFORMATION IS COOOOL<<
xenz
一般會員


發表:8
回覆:7
積分:3
註冊:2004-02-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-24 17:43:56 IP:219.93.xxx.xxx 未訂閱
引言: 除非你想更改的變數是屬於全域變數(global variable),否則,"傳呼叫"是不能更改那個""的,而必須以傳址的方式進行‧因此,你當然需要、必須使用指標囉! 事實上,指標的應用及功用真的太多了.舉一個簡單的例子,試想你要寫一個二分樹的程式,若你想完全不使用指標,你知道這個程式會變成怎樣嗎....? 他會變成一個又臭又長又醜陋的程式,相信我,因為我真的有試過‧這樣做,真的一點也不好玩... >>SPATIAL INFORMATION IS COOOOL<<
喔喔...那麼謝謝喔.. 我再去找些來學習
johnny149
一般會員


發表:0
回覆:13
積分:2
註冊:2004-03-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-28 14:38:29 IP:218.161.xxx.xxx 未訂閱
當您程式越寫越複雜時,您才會體會到pointer的威力 試問如何沒有pointer,如何實作 1. 動態記憶體配置/管理 2. 以函數為參數做函數呼叫 3. 結構陣列排序 ... 雖然不見得無解,但有用指標一定會簡單多的
系統時間:2024-04-17 7:16:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!