码迷,mamicode.com
首页 > 其他好文 > 详细

函数参数是二级指针的问题

时间:2018-03-09 22:53:20      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:版本   应用   free   har   void   log   div   col   实参   

实际应用中再一次遇到了函数参数是二级指针的问题,如下是正确的版本

void main(void)
{
    //一级指针
    uint8     *value_data_string = NULL;
    fun_change(&value_data_string );
    printf((char *)value_data_string );
    fun_free(&value_data_string );    
}

void fun_change(uint8 **tem_buf)
{
    int value_len = 5;
    *tem_buf = (uint8 *)malloc(value_len);
    strncpy(*tem_buf, "12345", 5);
printf(tem_buf); }
void fun_free(uint8 **tem_buf) { free(*tem_buf); }

如下是错误的版本,在于一级指针只能改变其指向的内容,而不能改变其本身的值,所以在fun_change里面给tem_buf赋值,形参改变,实参不改变。

void main(void)
{
    //一级指针
    uint8     *value_data_string = NULL;
    fun_change(value_data_string );
    printf((char *)value_data_string );
    fun_free(value_data_string );    
}

void fun_change(uint8 *tem_buf)
{
    int value_len = 5;
    tem_buf= (uint8 *)malloc(value_len);
    strncpy(tem_buf, "12345", 5);
printf(tem_buf); }
void fun_free(uint8 *tem_buf) { free(tem_buf); }

 

函数参数是二级指针的问题

标签:版本   应用   free   har   void   log   div   col   实参   

原文地址:https://www.cnblogs.com/429512065qhq/p/8536369.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!