Re: [問題] pointer assignment

看板C_and_CPP作者 (誰能了解)時間12年前 (2013/05/27 16:00), 編輯推噓3(302)
留言5則, 3人參與, 最新討論串2/2 (看更多)
int *p p是一個指標,它可以指向你機器記憶體的任何一個地方, 但是,所指的地方,能不能讀取,或是能不能寫入,看系統而定。 它的default值,有的compiler給它的是0x00000000 這個地方可以說是系統的地方,不許寫入的。 我以前用的大部份compiler沒有自動給default value stack那時放了什麼值,就是那個值了, 所以它的值會是什麼,沒有人知道,所以可能是任何數值, 沒加以設定,你去讀它寫它數值中的記憶體位置, 可能會是系統禁止你去讀取或寫入的地方。 運氣好,它沒有error message但你也不知道記憶體這個地方的值代表什麼。 ※ 引述《changyuheng (張昱珩)》之銘言: : 問題(Question): : void swap(int * a, int * b) { : int * p; // 好像有看過 p 要給 default value, : // 否則在 asign 時可能會因為 p 指向的是 non-writable 的 memory, : // 而產生問題。請問是否有此一說,或應該怎麼找資料? : *p = *a; p目前你沒有指定地方,所以p裡面所指的記憶體位置,不明, 它有可能是你16G記憶體的某個地方,也有可能超過16G,這還不含虛擬記憶體。 這時你將a所指的內容,放進p所指的記憶體裡不明位置,會發生什麼,很難說 : *a = *b; *b = *p; : } -- 看了神鵰俠侶,就應該知道年齡不是問題; 看了斷背山後,就應該知道性別不是問題; 看了金剛後,就應該明白是不是人也不是問題; 看了倩女幽魂以後,更要知道活不活著都不是問題…… -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.43.48.81 ※ 編輯: shemale 來自: 115.43.48.81 (05/27 16:08)

05/27 18:08, , 1F
謝謝!了解
05/27 18:08, 1F

05/27 18:13, , 2F
這讓我體會到 Petr Mitrichev 說過的:"It's harder
05/27 18:13, 2F

05/27 18:15, , 3F
to make a mistake in Java."
05/27 18:15, 3F

05/27 23:17, , 4F
怎麼可能... 那是因為思考方式不一樣的關係
05/27 23:17, 4F

05/28 00:01, , 5F
...別把java當cpp寫啦 orz
05/28 00:01, 5F
文章代碼(AID): #1HenAZd5 (C_and_CPP)
文章代碼(AID): #1HenAZd5 (C_and_CPP)