功能是否有可能使用其参数返回指针

Is it possible that a function return a pointer using its parameters ?

本文关键字:参数 返回 指针 是否 有可能 功能      更新时间:2023-10-16

我具有动态分配内存并将地址保留在其本地指针中的函数。我想要呼叫者功能中的地址。是的,我可以使用返回来做到这一点。但是可以使用函数的参数做到这一点吗?

#include<bits/stdc++.h>
using namespace std;
void getAddress(int *ptr){
    int *temp=(int*)malloc(sizeof(int));
    ptr=temp;
    cout<<ptr<<endl;
} 
int main(){
    int *ptr=NULL;
    cout<<ptr<<endl;
    getAddress(ptr);
    cout<<ptr<<endl;
    return 0;
}
output : 
0
0x6fa010
0
Expected output :
0
0x6fa010
0x6fa010

从样式上讲,如果您在功能主体中分配内存(因为那是C标准库函数的功能(,则最好是 return return 分配的指针。但是可以将其作为参数传递,但是您需要一个额外的间接水平

void getAddress(int **ptr){

*ptr=temp;

在功能主体中,

getAddress(&ptr);

在呼叫网站上。一种替代方法是通过参考:

通过指针
void getAddress(int*& ptr){

可能需要更少的更改,也许以呼叫网站的可读性为代价。

是的,您可以通过通过传递:

来做到这一点
void getAddress(int *&ptr){
//                   ~
    int *temp=(int*)malloc(sizeof(int));
    ptr=temp;
    cout<<ptr<<endl;
} 

ot: temp不是多余的吗?
OT2:不要忘记free main()末尾的指针。