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

时间:2011-03-12 23:56:51

标签: c++ c pointers

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

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)
}

我做错了什么?

2 个答案:

答案 0 :(得分:25)

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

使用此:

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

char *data = NULL;
if(dosomething(&data)){
}

答案 1 :(得分:2)

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按值传递所有内容