首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存分配

内存分配
EN

Stack Overflow用户
提问于 2011-05-28 16:13:27
回答 2查看 1.1K关注 0票数 0
代码语言:javascript
复制
typedef struct {
    float *numbers;
    float val1;
    float val2;
} Values; 
Values val[16];

如何为结构中的数字分配内存?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-28 18:25:07

因此,您可以在不使用动态内存分配的情况下做到这一点:

代码语言:javascript
复制
typedef struct {
    float *numbers;
    float val1;
    float val2;
} Values; 

#define MAX_SIZE 16

int main() {
    Values val[MAX_SIZE];
    float myfloats[MAX_SIZE];
    int i;
    for(i=0;i<MAX_SIZE;i++) {
        val[i].numbers=&myfloats[i];
    }
    return 0;
 }

但是我想不出为什么你想要一个只有一个浮点型指针的结构。

根据名称'numbers',我会说您希望'numbers'指向一个floats数组,如果是这样,您可以这样做:

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

typedef struct {
    float *numbers;
    float val1;
    float val2;
} Values; 

#define MAX_SIZE 16

int main() {
    Values val[MAX_SIZE];
    size_t numberOfFloats = 10;
    int i;

    // for each of the members of the val array
    for(i=0;i<MAX_SIZE;i++) {
        // allocate using calloc (this will set all of the floats to 0.0)
        val[i].numbers=calloc(numberOfFloats,sizeof(float));

        // check the allocation worked...
        if(!val[i].numbers) {
            // insert proper error handling here.
            printf("oops\n");
            return -1;
        }

    }

    // you access the variables like this
    for(i=0;i<MAX_SIZE;i++) {
        int number;
        for(number=0; number < numberOfFloats; number++) {
            printf("Value %d, Number %d = %f\n",i,number,val[i].numbers[number]);
        }
    }

    // don't forget to play nice and clean up afterwards
    for(i=0;i<MAX_SIZE;i++) {
        free(val[i].numbers);
    }
    return 0;
 }
票数 2
EN

Stack Overflow用户

发布于 2011-05-28 16:16:44

如果你想在你的struct的第一个元素中分配一个浮点数的空间,你可以这样做:

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

/* ... */

val[0].numbers = malloc(1 * sizeof(float)); /* "1 * " for clarity... */

如果你是这个意思的话。

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

https://stackoverflow.com/questions/6160484

复制
相关文章

相似问题

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