双指针的一个使用实例

      什么是双指针?

      例如:char **p; 

      p即为双指针。

      当我们需要修改指针变量本身的值的时候,可以使用双指针。

      先看一个示例:

  1. void getmemory(char *ptr)
  2. {   
  3.     ptr = (char *)malloc(20);                 
  4. }    
  5. void getbuffer()
  6. {   
  7.     char *buffer = NULL;   
  8.     getmemory(buffer);   
  9. }  

      示例想要修改buffer本身这个指针的值,但是getmemory(buffer)之后,buffer的值还是NULL。 由于ptr是局部变量,对ptr做修改无法反馈到getbuffer域中。

      修改为以下示例即可:

  1. void getmemory(char **p)
  2. {   
  3.     *p = (char *)malloc(10);   
  4. }   
  5. void getbuffer()
  6. {   
  7.     char *buffer;   
  8.     getmemory(&buffer);   

 

posted @ 2011-01-19 18:51  毛志谦  阅读(512)  评论(0编辑  收藏  举报