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

C++ 将指针的地址作为参数传递,c++,pointers,C++,Pointers,作为参数传递指针地址的点是什么?例如: int *ptr_one; ptr_one = (int *)malloc(sizeof(int)); 然后调用函数,如下所示: func(&ptr_one); 注意,函数参数如下所示: func(int **ptr) { ...... } 将指针传递给指针的目的是为了修改指针变量 回想一下,从C风格的编码中,可以通过向参数传递地址或指针来修改参数。如果参数是需要修改的int,则传递指向整数的指针。同样,如果函数将修改指针参数,则它是通过指针

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

int *ptr_one;
ptr_one = (int *)malloc(sizeof(int));
然后调用函数,如下所示:

func(&ptr_one);
注意,函数参数如下所示:

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

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


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

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


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

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

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

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

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

例如,当您传递{anything}的地址时,该函数可能会修改调用者的{anything}。这个练习(和你的代码)比C++多,一个典型的例子是当你把一个元素添加到一个列表中时,你需要通过它的代码>头< /code >(指针),并且能够修改它。使用单个指针是一个非常常见的错误,它会带来很多麻烦。但是,我们的方法是用C++引用,即通过引用传递指针,比如C++中的代码> FUNC(int */PTR)< /C> >,我们几乎不需要指针,因此,通过任何方式传递它们是相当罕见的。对于许多例子中的一个,当您通过{任何}的地址时,该函数可以修改调用方的{任何}。这个练习(和你的代码)比C++多,一个典型的例子是当你把一个元素添加到一个列表中时,你需要通过它的代码>头< /code >(指针),并且能够修改它。使用单个指针是一个非常常见的错误,它会带来很多麻烦。但是,我们的方法是用C++引用,即通过引用传递指针,比如在C++中使用代码> FUNC(int */PTR)< /C> >,我们几乎不需要指针,所以通过任何方式传递它们。一开始是相当罕见的。我的指针指向一个条目列表,每次调用该函数时,该函数都会不断修改指针的头部。我想这就是你自己修改指针的意思。是吗?@Anas:是的。如果您刚刚传入
head
,则指针在调用代码中不会更改,只在函数中更改。我的指针指向条目列表,函数将在每次调用时不断修改指针的head。我想这就是你自己修改指针的意思。是吗?@Anas:是的。如果您刚刚传入
head
,则指针不会在调用代码中更改,只会在函数中更改。