看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《williamyu (常磊)》之銘言: : ※ 引述《clanguage (C語言)》之銘言: : : 函數的 paremeter 就是區域變數, 是函數一執行幫你配置的 : : 區域變數就是離開 function 會被釋放, 無法取值 : : 這是因為它會幫你拷貝一份 argument 到 parameter : : 成為新的變數, 不管裡面放的是位址(指標)或是值 : : 所以你要傳指標進去, 出來還要拿到同一個指標 : : 就要用指標的指標.. 多包了一層 : : 抽象上的意義就不太一樣.. : char* getMem() : { : char * getmem; : getmem = (char*)malloc(100); : return getmem; : } : main() : { : char *str ; : str = getMem(); : strcpy(str, "Hello C/C++ programming"); : printf("%s\n", str); : getchar(); : } : 那這樣可以的原因是...? 這樣可以的原因是: 你在getMen()函式裡面分配了一塊記憶體空間給程式 而且把這一塊空間的位置傳給了main裡面的str pointer 所以str pointer確實指著一塊切確的記憶體位置 很多不熟pointer的人覺得pointer的概念很抽象 我個人對pointer的感覺是認為他就像一個接頭或箭頭 你可以new或malloc出很多不同的東西給他接 但是前提是你要接給他才算數 如果你生出了東西卻沒給他接上 這個pointer只是個沒接上東西的接頭而已 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.235.144