首页 > 其他 > 详细

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

时间:2018-03-09 21:51:23      阅读:227      评论:0      收藏:0      [点我收藏+]

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

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); }

 

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!