首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从分配函数的outsite访问结构指针的值?

如何从分配函数的outsite访问结构指针的值?
EN

Stack Overflow用户
提问于 2020-11-08 08:21:11
回答 1查看 48关注 0票数 1

我使用声明和插入结构的文件。

代码语言:javascript
复制
typedef struct {
    uint8_t * ringBuffer;
    size_t head;
    size_t tail;
    size_t capacity;
    bool full;
} RingBuffer;

static inline void ringBufferInit(RingBuffer* ringBuffer)
{

    ringBuffer = (RingBuffer *) malloc(sizeof(RingBuffer));

    //ringBuffer->ringBuffer = buffer;
    ringBuffer->capacity = 128;
    printf("%d \n", ringBuffer->capacity);
}

我调用这个函数的文件:

代码语言:javascript
复制
int main()
{
    testRingBufferPushPopSingle();
}

void testRingBufferPushPopSingle()
{
    RingBuffer ringBuffer;
    ringBufferInit(&ringBuffer);
    size_t a = (ringBuffer->capacity);
    printf("%d \n", a);
}

问题是,似乎在主函数中指针没有更新,因为程序打印。

128

2125407052

只有128个值(在分配块中读取是正确的)。

知道我做错什么了吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-08 09:36:11

函数ringBufferInit没有意义。在函数testRingBufferPushPopSingle中,您已经创建了一个类型为RingBuffer的对象。

代码语言:javascript
复制
RingBuffer ringBuffer;

因此,ringBufferInit需要做的是初始化已经创建的对象ringBuffer的数据成员。

它可以看起来像下面的方式

代码语言:javascript
复制
static inline void ringBufferInit(RingBuffer* ringBuffer)
{
    //ringBuffer->ringBuffer = buffer;
    ringBuffer->capacity = 128;
    printf("%d \n", ringBuffer->capacity);
}

否则在函数内

代码语言:javascript
复制
static inline void ringBufferInit(RingBuffer* ringBuffer)
{

    ringBuffer = (RingBuffer *) malloc(sizeof(RingBuffer));

    //ringBuffer->ringBuffer = buffer;
    ringBuffer->capacity = 128;
    printf("%d \n", ringBuffer->capacity);
}

您更改了它的局部变量ringBuffer (指针类型为RingBuffer *),该变量在退出函数后将不活动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64736091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档