[問題] 指標陣列 傳遞問題?想了超久

作者: kai5566 (改名Dirk_AI56)   2016-02-19 23:05:07
void getMem(char *ptr)
{
*ptr = (char*)malloc(200);
}
main()
{
char *str = NULL;
getMem(&str);
strcpy(str, "Hello C/C++ programming");
printf("%s\n", str);
}
我試過void getMem(char **ptr)
改成兩個星號才會過
不懂為什麼??
作者: stupid0319 (徵女友)   2016-02-20 16:29:00
指標大魔王
作者: james732 (好人超)   2016-02-19 23:11:00
置底十三誡的第十三?
作者: crazycy (LCY)   2016-02-19 23:28:00
str的型態...
作者: kai5566 (改名Dirk_AI56)   2016-02-19 23:30:00
不好意思 我覺得我很弱 可以麻煩多解釋一些嗎?
作者: crazycy (LCY)   2016-02-19 23:33:00
你main裡的str是char*&str 就是char***ptr 是指 ptr這個位址指向的目標&str 是指 指向str這個變數的位址所以原本你的str是char* 是指向一個char的指標你再取&str 就是 指向一個(char*)的指標
作者: kai5566 (改名Dirk_AI56)   2016-02-19 23:56:00
我想一下......我讀指標的書怎麼都沒講到這些= =
作者: overhead (overhead)   2016-02-20 01:08:00
關鍵字"雙重指標"
作者: Frozenmouse (*冰之鼠*)   2016-02-20 03:40:00
把char*看成T的話,&str就是T*,會不會比較好懂XD
作者: fightforlive (學歷無用論是屁)   2016-02-20 05:20:00
字串型態宣告通常為char str_name[], 所以可以知道為字元陣列.陣列名稱本身就是第一個元素的記憶體位址,又&str_name為取記憶體位址,所以需要表示成char**,也可以是char*[陣列大小].但是其實現再只有一個字串,而不是字串陣列(多個字串),所以&str_name還是指第一個字元的記憶體位址.如果為多個字串,則指第一個字串的第一個字元記憶體位址

Links booklink

Contact Us: admin [ a t ] ucptt.com