[問題] pointer的問題
int main (void)
{
int xyz=0;
char *ptr = (char*)&xyz;
func(ptr);
cout<<"xyz="<<xyz<<endl;
}
在func中處理ptr使最後印出之結果為
xyz=12345678
其實原本第4行 只有char* ptr = xyz; 但是這樣compile 會有error
所以加上了(char*)
問題在 如果ptr 是int* 就很好處理, *ptr = 12345678; 就可以了
但是是char* 我就不太懂要怎麼處理了
如果直接輸入 *ptr = 12345678 結果會是 xyz=78; 為什麼呢? (後來我了解了)
我測試發現如果 *ptr = 123 是可以的 再多一位就不行了
接著得知*ptr = 127 以內都可以在xyz中正確顯示
超過就會開始變得不同
之後開始思考如何把45678也給弄出來
想到用ptr[0] = 123 ptr[1] = 45 ptr[2] = 67...這樣 (<<沒仔細思考過的舉動)
結果根本跟我想的差超多
xyz出來會是一個很大的數字
接著發現不管ptr[7] = ? 都是那個值
所以了解ptr[7]是無關的東西 >ptr[6] 無關 >>>>>>>>>>ptr[3] 終於跟他有關!!
嘗試ptr[3]=1 結果大過於12345678
ptr[2]=1 65536 即便我大學沒學好 我還能理解到接著ptr[1] =1 會得到 256
而ptr[0] = 1 就會得到1
終於我就用 ptr[2] = 188; ptr[1] = 97; ptr[0] = 78;
得到xyz=12345678
=================================================================
以上是個pointer沒學好的人花了一下午推出來的結果
=================================================================
一個int型態資料佔有的記憶體空間是4byte,我完全知道
但是跟pointer混在一起我就沒有辦法很快理解到
只怪當初大學沒認真學,基本都知道但沒去融會貫通...
真的的問題是:要得到那個數字只能用除法12345678/65536..餘/256..餘放到ptr[0]嗎?
這樣子的做法(char* 指向 int)有什麼特別的意義或用途嗎目前想不到
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.0.34.42
→
08/25 03:26, , 1F
08/25 03:26, 1F
→
08/25 03:26, , 2F
08/25 03:26, 2F
→
08/25 03:35, , 3F
08/25 03:35, 3F
推
08/25 03:37, , 4F
08/25 03:37, 4F
→
08/25 03:39, , 5F
08/25 03:39, 5F
推
08/25 03:47, , 6F
08/25 03:47, 6F
→
08/25 03:49, , 7F
08/25 03:49, 7F
→
08/25 03:50, , 8F
08/25 03:50, 8F
→
08/25 03:50, , 9F
08/25 03:50, 9F
→
08/25 03:51, , 10F
08/25 03:51, 10F
→
08/25 07:08, , 11F
08/25 07:08, 11F
推
08/25 08:44, , 12F
08/25 08:44, 12F
→
08/25 08:46, , 13F
08/25 08:46, 13F
→
08/25 08:51, , 14F
08/25 08:51, 14F
推
08/25 10:45, , 15F
08/25 10:45, 15F
→
08/25 10:51, , 16F
08/25 10:51, 16F
推
08/25 11:22, , 17F
08/25 11:22, 17F
→
08/25 11:23, , 18F
08/25 11:23, 18F
推
08/25 14:26, , 19F
08/25 14:26, 19F
討論串 (同標題文章)