Re: [問題] Pointer?
※ 引述《CSLabor (電腦工人)》之銘言:
: 小弟剛剛做了一個Pointer實驗
: 發現一個百思不解的事實
: 有請各位強者幫不才小弟我解答一下
: void main(){
: char* pc;
: pc="abcd";
: printf("pc=%s\n",pc);
: system("pause");
: }
: 執行結果pc=abcd
: Q1:char指標變數不指定記憶體位置可以用?
: 還是說只能在這種狀況才可以這樣用?
指標變數若是用來指向一個已經存在的實體
那麼他不需要做malloc(實體並沒有被複製,何須再向系統要記憶體?)
例如pc="abcd"
這條指令是兩個步驟
首先,系統先在記憶體中存入"abcd"這個字串實體於某個位址(假設是0x100)
然後再把0x100 assign給pc
記憶體中只有一個"abcd"實體
: Q2:對於pc="abcd"不解?
: 這樣做是將"abcd"的記憶體位置指定給pc的位置嗎?
沒錯
: 那如果A字串複製到B字串為何要使用strcpy呢?
: strcpy(char* B,char* A);
: 而不能用B=A?
B=A的意義就是把A的內容assign給B
假設A的內容是0x100
那麼B被assign後也變成0x100
A和B變成是指向同一個實體的指標
此時記憶體中還是只有一個實體
但若是用strcpy(B,A)
則是將A指向的實體複製一份到B指向的位址(假設是0x100)
因此記憶體中就有兩個相同實體了
一個存放在指標A指向的位址
另一個存放在指標B指向的位址(0x100)
有個重點是指標B是透過malloc向系統取得0x100這個位址的
所以在strcpy(B,A)之前
您必須先做malloc for B
: Q3:小弟我指標很弱
: 不知道有沒有推薦的網頁或是電子書給小弟?
: 其他有用的material也可
: 一般C語言入門書籍講的大同小異
: 不外乎就是取變數記憶體位置而已
: 小弟很想把指標用到出神入化的境界
: 卻不得其門而入?
: 煩請各位強者幫小弟我指點迷津吧
: 在這邊先謝謝各位強者幫忙
: 小弟感激不盡
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.66.19.129
推
06/11 16:17, , 1F
06/11 16:17, 1F
→
06/11 16:19, , 2F
06/11 16:19, 2F
→
06/11 21:42, , 3F
06/11 21:42, 3F
→
06/11 21:51, , 4F
06/11 21:51, 4F
→
06/11 21:53, , 5F
06/11 21:53, 5F
討論串 (同標題文章)