什么是双指针?
例如:char **p;
p即为双指针。
当我们需要修改指针变量本身的值的时候,可以使用双指针。
先看一个示例:
- voidgetmemory(char*ptr)
- {
- ptr=(char*)malloc(20);
- }
- voidgetbuffer()
- {
- char*buffer=NULL;
- getmemory(buffer);
- }
示例想要修改buffer本身这个指针的值,但是getmemory(buffer)之后,buffer的值还是NULL。由于ptr是局部变量,对ptr做修改无法反馈到getbuffer域中。
修改为以下示例即可:
-
voidgetmemory(char**p)
-
{
*p=(char*)malloc(10);
}
voidgetbuffer()
{
char*buffer;
getmemory(&buffer);
}