将指针的地址作为参数传递的是什么?例如:
int *ptr_one;
ptr_one = (int *)malloc(sizeof(int));
然后调用函数如下:
func(&ptr_one);
注意函数参数如下:
func(int **ptr)
{
......
}
答案 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) {
.
.
.
}