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

Roo*_*kie 15 c c++ pointers

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

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

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

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

我究竟做错了什么?

Eri*_*rik 25

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

用这个:

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

char *data = NULL;
if(dosomething(&data)){
}
Run Code Online (Sandbox Code Playgroud)

  • 在c ++中是 - 然后使用`bool dosomething(char*&data)` - 通过引用传递 (2认同)