如何将指针作为函数参数返回
我正在尝试从函数参数返回数据指针:
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按值传递所有内容 。