[問題] Pointer?

看板C_and_CPP作者 (電腦工人)時間15年前 (2010/06/05 20:25), 編輯推噓4(4010)
留言14則, 7人參與, 最新討論串1/2 (看更多)
小弟剛剛做了一個Pointer實驗 發現一個百思不解的事實 有請各位強者幫不才小弟我解答一下 void main(){ char* pc; pc="abcd"; printf("pc=%s\n",pc); system("pause"); } 執行結果pc=abcd Q1:char指標變數不指定記憶體位置可以用? 還是說只能在這種狀況才可以這樣用? Q2:對於pc="abcd"不解? 這樣做是將"abcd"的記憶體位置指定給pc的位置嗎? 那如果A字串複製到B字串為何要使用strcpy呢? strcpy(char* B,char* A); 而不能用B=A? Q3:小弟我指標很弱 不知道有沒有推薦的網頁或是電子書給小弟? 其他有用的material也可 一般C語言入門書籍講的大同小異 不外乎就是取變數記憶體位置而已 小弟很想把指標用到出神入化的境界 卻不得其門而入? 煩請各位強者幫小弟我指點迷津吧 在這邊先謝謝各位強者幫忙 小弟感激不盡 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.225.139.231

06/05 20:26, , 1F
"abcd" 在 literal pool 佔有一個固定位址, pc = "abcd"
06/05 20:26, 1F

06/05 20:27, , 2F
確實是 copy pointer 而已。附帶一提,正確的 type 應該是
06/05 20:27, 2F

06/05 20:27, , 3F
const char *,新一點的 compiler 應該會給你警告。
06/05 20:27, 3F

06/05 20:27, , 4F
複製內容是用 strcpy() 沒錯。
06/05 20:27, 4F

06/05 20:34, , 5F
但是自己做實驗B=A卻可以?小弟對指標越模糊了...
06/05 20:34, 5F

06/05 20:36, , 6F
用const修飾 更為此字串加註不能更改 一樓幹的好
06/05 20:36, 6F

06/05 20:38, , 8F
google "c pointer tutorial" 樓上網址排在第一位置
06/05 20:38, 8F

06/05 20:43, , 9F
似乎用char *const str_p="rock" 更為明顯 @@?
06/05 20:43, 9F

06/05 20:44, , 10F
樓上錯了 這就變成 str_p 本身不能改去指別人
06/05 20:44, 10F

06/05 20:44, , 11F
XD
06/05 20:44, 11F

06/05 20:45, , 12F
對不起 = = const*const 搞混了...
06/05 20:45, 12F

06/05 20:45, , 13F
這是編譯時期跟執行時期的差別
06/05 20:45, 13F

06/05 20:58, , 14F
"Pointer on C"
06/05 20:58, 14F
文章代碼(AID): #1C2a8pBc (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 2 篇):
問題
4
14
文章代碼(AID): #1C2a8pBc (C_and_CPP)