[問題] 指標變數加星號的差別

看板C_and_CPP作者 (Veck)時間13年前 (2011/05/19 01:08), 編輯推噓2(2016)
留言18則, 8人參與, 最新討論串1/1
最近寫程式用到指標變數 卻不小心亂掉了 如果在main中宣告一個指標變數 void main() { int *a; //是一個指標變數 a=... //可以通過編譯 *a=... //可以通過編譯 } 我知道*a用在副程式中視表示傳址呼叫 但是像這樣在main裡面使用 a 和 *a 的差別是什麼呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.73.109

05/19 01:12, , 1F
一個是指標所存的位址值 一個是位址的內容...
05/19 01:12, 1F

05/19 01:32, , 2F
看看*表示什麼吧 還有指標的觀念也可以在看看
05/19 01:32, 2F

05/19 02:08, , 3F
書上沒寫嗎? ...= =
05/19 02:08, 3F

05/19 02:13, , 4F
http://pastie.org/1922863 可以先猜猜它的執行結果
05/19 02:13, 4F

05/19 02:14, , 5F
然後再實際跑跑看
05/19 02:14, 5F

05/19 02:28, , 6F
只要有星,人人都是專家
05/19 02:28, 6F

05/19 07:35, , 7F
你需要指標那章再仔細點回味 對有些人沒這麼好懂
05/19 07:35, 7F

05/19 07:35, , 8F
畢竟有點繞了一圈的感覺
05/19 07:35, 8F

05/19 09:01, , 9F
其實我也是花了很長的時間才搞懂* and &再幹麼
05/19 09:01, 9F

05/19 09:04, , 10F
所以這篇,我可以耐著性子回答
05/19 09:04, 10F

05/19 09:06, , 11F
int *a代表point to int.也就是說a可以指向一個int變數
05/19 09:06, 11F

05/19 09:07, , 12F
也就是說a是一個變數,只是它存著位置.
05/19 09:07, 12F

05/19 09:09, , 13F
但是在*a例子中,*代表Dereference Operator,它可read
05/19 09:09, 13F

05/19 09:12, , 14F
and write 所指向的內容(ex:int b=0;int *a = &b;當你
05/19 09:12, 14F

05/19 09:13, , 15F
操作*a時,其實也等於操作b的內容).
05/19 09:13, 15F

05/19 09:16, , 16F
~"~講真的,要看至少10遍以上的書和網路例子,才可以慢慢
05/19 09:16, 16F

05/19 09:17, , 17F
理解再幹麼,就像ianfang的說法.
05/19 09:17, 17F

05/19 10:09, , 18F
推s大中肯XD 指標是 C 語言最有趣的部份
05/19 10:09, 18F
文章代碼(AID): #1Dq_qT40 (C_and_CPP)