我有一个动态分配内存并将地址保存在本地指针中的函数。我想在调用函数中使用该地址。 是的,我可以使用return来做到这一点。但是可以使用函数的参数吗?
#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
答案 0 :(得分:2)
如果在函数体中分配内存(就像C标准库函数所做的那样),在风格上最好返回分配的指针。但是可以将它作为参数传递,但是你需要额外的间接级别:
void getAddress(int **ptr){
与
*ptr=temp;
在函数体中,
getAddress(&ptr);
在通话网站上。另一种方法是通过引用传递指针:
void getAddress(int*& ptr){
这可能需要更少的更改,但这可能会牺牲主叫站点的可读性。
答案 1 :(得分:1)
是的,你可以通过传递参考来实现:
void getAddress(int *&ptr){
// ~
int *temp=(int*)malloc(sizeof(int));
ptr=temp;
cout<<ptr<<endl;
}
OT:不是temp
多余的吗?
OT2:不要忘记free
main()
末尾的指针{/ 1}。