指针的引用

2022-03-25 12:01:06 浏览数 (1)

有这么一个场景:程序中某一模块在对数据进行处理,另一个模块想要将其处理的数据写入文件,这时候有两种方案,一个是通过接口将数据拷贝出来,好处是写数据到文件不影响处理数据,缺点是占用内存较大;一个是将数据的地址传递出来,这样写入文件的时候不能对数据进行处理,好处是节省内存,不用重复的分配和释放内存。

决定采用第二个方案,维护一个指向数据地址的指针,但是在编码时发现,函数直接传递指针进去,然后对指针进行赋值,这样在此函数内指针是没有问题,但函数调用结束指针还是没有指向需要的地址;最后通过传递指针的引用来解决。

代码语言:javascript复制
#include <iostream>
#include "stdlib.h"

void func_ref_of_pointer(float* &p, float* data);
void func_pointer(float* p, float* data);

int main()
{
    // init
    float * data = (float*)malloc(2 * sizeof(float));
    memset(data, 0, sizeof(float)*2);
    float t = 1.2;
    memcpy(data, &t, sizeof(float));
    t = 3.4;
    memcpy(data 1, &t, sizeof(float));
    printf("data: %f %fn", data[0], data[1]);

    // test
    float * p = NULL;
    {
        func_ref_of_pointer(p, data);
    }
    {
        //func_pointer(p, data);
    }
    printf("p data: %f %fn", p[0], p[1]);

    return 0;
}

void func_ref_of_pointer(float* &p, float* data)
{
    p = data;
}

void func_pointer(float* p, float* data)
{
    p = data;
}

0 人点赞