[問題] 自己練習運用基礎的指標小問題
以下是我打的程式碼
#include <stdlib.h>
#include <stdio.h>
int main()
{
int times=0;
int NUM=123;
int *pNUM=&NUM;
while(times<5){
printf("%p>>>%d\n",pNUM,*pNUM);
pNUM+=1;
*pNUM=NUM;
times+=1;
}
system("pause");
return 0;
}
我的目標是把變數NUM的值123
也寫入NUM後面接的4個位址
假設NUM的位址是0x0001
那麼結果應該是:
0x0001 值→123
0x0005 值→123
0x0009 值→123
0x000d 值→123
0x0011 值→123
可是編譯器顯示的只有第一行,也就是
0x0001 值→123
為什麼會這樣呢?問題是否出在其實後面四個是無法寫入的?
菜鳥請各位高手指教orz
-----
Sent from JPTT on my InFocus M330.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.127.110.54
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1438654401.A.DAD.html
→
08/04 10:35, , 1F
08/04 10:35, 1F
啊...我天真的以為後面一直加下去就會有
※ 編輯: xjpjeass (140.127.110.54), 08/04/2015 10:53:23
推
08/04 13:06, , 2F
08/04 13:06, 2F
推
08/04 19:02, , 3F
08/04 19:02, 3F
指標是儲存記憶體位址的變數~(應該吧...)
推
08/04 20:27, , 4F
08/04 20:27, 4F
溢位的話,是指我寫入的是無意義未定義的記憶體空間嗎?
※ 編輯: xjpjeass (219.80.129.226), 08/04/2015 20:49:43
※ 編輯: xjpjeass (219.80.129.226), 08/04/2015 20:50:33
推
08/04 22:42, , 5F
08/04 22:42, 5F
是所謂的緩衝區溢位嗎?
我無言了0.0
※ 編輯: xjpjeass (219.80.129.226), 08/04/2015 23:58:36
※ 編輯: xjpjeass (219.80.129.226), 08/05/2015 00:01:34
→
08/05 00:05, , 6F
08/05 00:05, 6F
→
08/05 00:05, , 7F
08/05 00:05, 7F
推
08/05 00:18, , 8F
08/05 00:18, 8F
→
08/05 00:19, , 9F
08/05 00:19, 9F
欸?times是宣告用來當作計算迴圈次數的變數,應該跟NUM沒什麼關係啊.....
→
08/05 00:24, , 10F
08/05 00:24, 10F
啊,我好像大概了解你的意思了....所以這樣第一次以後就無法執行了吧。然後,我在去把那段看熟好了....
※ 編輯: xjpjeass (219.80.129.226), 08/05/2015 00:26:38
推
08/05 00:28, , 11F
08/05 00:28, 11F
好我試試看吧
※ 編輯: xjpjeass (219.80.129.226), 08/05/2015 00:28:31
※ 編輯: xjpjeass (219.80.129.226), 08/05/2015 00:29:27
推
08/27 08:03, , 12F
08/27 08:03, 12F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 4 篇):