将指针的地址作为参数传递

时间:2015-02-12 00:23:00

标签: c++ pointers

将指针的地址作为参数传递的是什么?例如:

int *ptr_one;
ptr_one = (int *)malloc(sizeof(int));

然后调用函数如下:

func(&ptr_one);

注意函数参数如下:

func(int **ptr)
{
......
}

2 个答案:

答案 0 :(得分:2)

将指针传递给指针的目的是可以修改指针变量。

回想一下,从C风格的编码中,可以通过将地址或指针传递给参数来修改参数。如果参数是需要修改的int,则传递指向整数的指针。同样,如果函数修改了指针参数,则它通过指针传递给指针(或指针的地址)。

答案 1 :(得分:2)

如果您希望修改指针本身,则需要通过引用或指针的地址传递它。如,

func(int **ptr)
{
    free(ptr);

    ptr = new int[2]; //side note: use new instead of malloc in C++
                      //memory allocated with new is deallocated with
                      //delete
}

在C中,传递指针的地址是您在函数中分配或释放该指针的内存的唯一方法。但是,在C ++中,通过引用通常更好。所以你的代码的C ++版本看起来像:

int *ptr = new int;
func(ptr);
delete ptr;

void func(int *&ptr) {
.
.
.
}