[問題] 請問一下為何要使用new?

看板C_and_CPP作者時間12年前 (2011/11/21 22:40), 編輯推噓3(3037)
留言40則, 11人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) BCB 問題(Question): 想請問一下new所代表的意思? 例如 int a=3,*ptr; char buff[3]; ptr=new int;// 這行代表說建立一個int大小的空間並讓ptr指定? ptr=&a; sprintf(buff,"%d",*ptr); Edit1->Text=buff; 想請問一下有打第3行跟沒有打 到底有什麼差別? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.141.34

11/21 22:43, , 1F
該看書的時候,還是要看書啊。這種問法請家教嗎@@?
11/21 22:43, 1F

11/21 22:48, , 2F
我已經盡力查了好幾本書了...但是書上的說明 我覺得很奇
11/21 22:48, 2F

11/21 22:48, , 3F
怪... 在int *ptr時 就已經配置了一塊空間給它了不是嗎?
11/21 22:48, 3F

11/21 22:49, , 4F
宣告空間+初始化
11/21 22:49, 4F

11/21 22:50, , 5F
為何要特別去配置一個可以容納整數大小的空間給它?
11/21 22:50, 5F

11/21 22:50, , 6F
int *ptr是配置那個指標的空間,但是指標指向的空間
11/21 22:50, 6F

11/21 22:50, , 7F
沒有配置,所以需要new來配置
11/21 22:50, 7F

11/21 22:53, , 8F
但你的new沒有給初值,所以只有配置而已
11/21 22:53, 8F

11/21 22:55, , 9F

11/21 22:56, , 10F
你需要的是好好找一本書看清楚,指標不好懂!加油
11/21 22:56, 10F

11/21 22:56, , 11F
非常感謝! d大講的很容易懂!
11/21 22:56, 11F

11/21 22:57, , 12F
你可以注意看&ptr都對到一樣的,但是ptr不一樣
11/21 22:57, 12F

11/21 22:57, , 13F
因為指向的位置都不同,同時也表示*ptr都不同
11/21 22:57, 13F

11/21 22:57, , 14F
因為你同一個指標一直指向不同的地方,就像你一台車
11/21 22:57, 14F

11/21 22:58, , 15F
的目的地每次都不同,但都是同一台車子
11/21 22:58, 15F

11/22 06:44, , 16F
這第3行是多打的吧@@" 用不到new阿.......
11/22 06:44, 16F

11/22 06:51, , 17F
人家想要浪費一點記憶體嘛 (扭)
11/22 06:51, 17F

11/22 09:09, , 18F
最近才發現樓上是雙子
11/22 09:09, 18F

11/22 22:44, , 19F
int *ptr只是知道有一個地址,但是地址在哪,裡面住誰都不
11/22 22:44, 19F

11/22 22:45, , 20F
知道,這樣比喻原po不曉得了不了解?
11/22 22:45, 20F

11/22 22:46, , 21F
new就是要產生地址,至於裡面要住誰(存放在地址內的東西)
11/22 22:46, 21F

11/22 22:47, , 22F
則要自己去填入,不過new可能會幫你填0進去.
11/22 22:47, 22F

11/23 09:14, , 23F
int *ptr是門牌,指向int val的位置.這樣比喻就好
11/23 09:14, 23F

11/23 10:18, , 24F
用門牌來比喻可能不太洽當,門牌應該用來當作真實記憶體
11/23 10:18, 24F

11/23 10:18, , 25F
位置
11/23 10:18, 25F

11/23 10:40, , 26F
我記得之前有看過是比喻成郵局的小信箱...
11/23 10:40, 26F

11/23 11:40, , 27F
~"~哀.其實一個比喻嘛.而且門牌可以移轉到不同的家阿
11/23 11:40, 27F

11/23 13:07, , 28F
大家對不看書的人都好有耐心...
11/23 13:07, 28F

11/23 13:07, , 29F
從第一章開始照著sample慢慢寫下來很難嗎..
11/23 13:07, 29F

11/23 13:08, , 30F
為什麼一定要東查一個西找一個..
11/23 13:08, 30F

11/23 16:19, , 31F
To priv 別激動
11/23 16:19, 31F

11/23 16:25, , 32F
11/23 16:25, 32F

11/23 16:31, , 33F
沒激動啊,只是無言
11/23 16:31, 33F

11/23 22:04, , 34F
抱歉我比較笨了點...我已經從頭開始看 看完三本跟程式有
11/23 22:04, 34F

11/23 22:05, , 35F
關西的書了orz 可是三本書裡面對於new 本身的描述真的很
11/23 22:05, 35F

11/23 22:05, , 36F
少... 很抱歉問了這麼笨的問題= =
11/23 22:05, 36F

11/24 00:28, , 37F
我想建議你先學一下如何找一本適合你的書讀(認真)
11/24 00:28, 37F

11/24 08:54, , 38F
也不是笨.就你聽不懂老師上課講什麼.買的書也沒特別一章
11/24 08:54, 38F

11/24 08:55, , 39F
講解為何這樣用.然後這邊的人幾乎都搞懂指標.跟我一年前
11/24 08:55, 39F

11/24 08:56, , 40F
狀況差不多. 多學點細節的觀念會提升品質喔>.
11/24 08:56, 40F
文章代碼(AID): #1EocB2CJ (C_and_CPP)
文章代碼(AID): #1EocB2CJ (C_and_CPP)