- 论坛徽章:
- 0
|
楼主的问题概括一下几点:
(1) 函数参数的传递方式
指针也就是一个变量,在调用函数栈内是该指针的拷贝值,指向的内存是一致的。
(2) 在函数中要修改指针的指向,不是指针指向的内容,应该传递指向指针的指针,或者指向指针的引用
(3) 楼主的代码可能还存在一个问题,就是返回栈变量的指针,这个是非常危险的
下面的代码还要注意内存泄漏的问题,呵呵
void get(int *p)
{
int *local = new int(101);
p = local;
}
void change(int *&q)
{
int *local = new int(102);
q = local;
}
void changeP(int **q)
{
int *local = new int(103);
*q = local;
}
int main(void)
{
int a = 50;
int *q = &a;
get(q);
std::cout<<*q<<std::endl;
change(q);
std::cout<<*q<<std::endl;
changeP(&q);
std::cout<<*q<<std::endl;
//注意回收内存
system("PAUSE");
return EXIT_SUCCESS;
} |
|