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