前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >指针的引用

指针的引用

作者头像
零式的天空
发布2022-03-25 12:01:06
2950
发布2022-03-25 12:01:06
举报
文章被收录于专栏:零域Blog

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

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

代码语言: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 %f\n", data[0], data[1]);

    // test
    float * p = NULL;
    {
        func_ref_of_pointer(p, data);
    }
    {
        //func_pointer(p, data);
    }
    printf("p data: %f %f\n", 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;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档