[问题] 指标阵列 传递问题?想了超久

楼主: 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