如何将指针作为函数参数返回

我正在尝试从函数参数返回数据指针:

bool dosomething(char *data){ int datasize = 100; data = (char *)malloc(datasize); // here data address = 10968998 return 1; } 

但是当我按以下方式调用该函数时,数据地址变为零:

 char *data = NULL; if(dosomething(data)){ // here data address = 0 ! (should be 10968998) } 

我究竟做错了什么?

你正在经历价值。 dosomething修改其本地data副本 – 调用者永远不会看到它。

用这个:

 bool dosomething(char **data){ int datasize = 100; *data = (char *)malloc(datasize); return 1; } char *data = NULL; if(dosomething(&data)){ } 
 int changeme(int foobar) { foobar = 42; return 0; } int main(void) { int quux = 0; changeme(quux); /* what do you expect `quux` to have now? */ } 

你的代码片段也是如此。

C按值传递所有内容