iT邦幫忙

0

c語言,指標問題

匿名 2012-03-20 15:24:253524 瀏覽
  • 分享至 

  • xImage

int a=10,b;
int *p;
p=&a;
b=*p;
*p=20;

結果答案是=20,b=10

why??

總裁 iT邦好手 1 級 ‧ 2012-03-20 16:02:42 檢舉
可以讓我不要頭昏昏的

cflin iT邦新手 4 級 ‧ 2012-03-22 13:20:40 檢舉
p1++; 是加一個指標所指的單元長度,因宣告 int *pi 所以加4 bytes。
pch--; 是減一個指標所指的單元長度 因宣告 char *pch 所以減 1 byte

建議先了解指標的定義吧。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

10
總裁
iT邦好手 1 級 ‧ 2012-03-20 17:03:02
最佳解答

指標是門牌,變數是房間裡的東西,
*門牌:就是拿門牌後面房間裡的東西
&房間:就是看房間的門牌號碼
所以
int a=10,b;
int *p;
開了兩個房間a,b
a房間住了10
還拿了個空門牌p
p=&a;把p這個門牌掛到a房間去(這時p門牌就等於a房間的門牌)
b=*p;把p門牌後面房間裡的東西複製到b房間(b房間也住了10)
*p=20;把p門牌後面房間裡的東西改成20(所以a房間也住了20)

匿名 檢舉

少了一個int sub??

4
perton
iT邦新手 1 級 ‧ 2012-03-20 16:09:29

int a=10,b;
int *p;
p=&a; // 把變數 a 的位置,指派給指標 p,所以 *p 的內容就是 10
b=*p; // => b = 10
*p=20; // 再次將 *p 的內容,設定為 20,也就是指標 p 所指的位置內容,要變更為 20
// 還記得指標是指到 變數 a ? 所以,變數 a 就改變為 20

結果答案是a=20,b=10

我要發表回答

立即登入回答