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

Posted 乔海权_429512***杭州

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数参数是二级指针的问题相关的知识,希望对你有一定的参考价值。

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

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

 

以上是关于函数参数是二级指针的问题的主要内容,如果未能解决你的问题,请参考以下文章

20160210.CCPP体系详解(0020天)

二级指针作为函数参数的典型用法

李连杰的二级指针,二级指针的用途,多级指针的定义使用,数组与指针的区别,void 类型指针,引用

C 语言二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )

C语言02 - 指针运算数组与指针指针变量名指针与函数参数指针函数函数指针二级指针

20160210.CCPP体系详解(0020天)