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

Passing the address of a pointer as a parameter

本文关键字:参数传递 地址 指针      更新时间:2023-10-16

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

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

则函数被调用如下:

func(&ptr_one);

请注意,函数参数如下:

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

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

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) {
.
.
.
}

将指针传递给指针的目的是为了修改指针变量。

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