首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将可变长度数组存储在C中的结构中

如何将可变长度数组存储在C中的结构中
EN

Stack Overflow用户
提问于 2013-10-18 01:32:15
回答 1查看 207关注 0票数 2

我希望将可变长度数组存储在结构中,并为此使用指针。但是,如果检索存储的数组,则会得到错误的值。在下面的示例中,我得到输出"1 0",而您希望输出“12”。

代码语言:javascript
复制
#include <stdio.h>

typedef struct Flexibility {
    int *flex;
} Flexibility;

Flexibility calculateFlexibility()
{
    int a[2];
    a[0] = 1;
    a[1] = 2;

    Flexibility f;
    f.flex = a;
    return f;
}


void main()
{
    Flexibility f;
    f = calculateFlexibility();

    int i;
    for(i = 0; i < 2; i++)
    {
        fprintf(stdout, "%i ", *(f.flex + i));
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-18 01:37:20

在函数a中创建临时变量calculateFlexibility,然后存储指向f.flex变量的指针,但是函数结束后-- a从内存中消失,所以您的f.flex指针现在指向任何位置。

如果您想拥有真正的可变长度,您应该这样做:

代码语言:javascript
复制
Flexibility calculateFlexibility()
{
    Flexibility f;
    f.flex = (int*)malloc(....);
    return f;
}

在节目结束时:

代码语言:javascript
复制
free(f.flex);

关于malloc的正确论点,我建议您阅读:http://en.cppreference.com/w/c/memory/malloc

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

https://stackoverflow.com/questions/19440120

复制
相关文章

相似问题

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