※ 引述《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