关闭

双指针的一个使用实例

标签: buffernull
398人阅读 评论(0) 收藏 举报
分类:

      什么是双指针?

      例如: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);   

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:91813次
    • 积分:1930
    • 等级:
    • 排名:千里之外
    • 原创:107篇
    • 转载:0篇
    • 译文:0篇
    • 评论:26条
    文章分类
    最新评论