c - 为结构中的数组分配内存(在 C 中)

标签 c arrays pointers struct malloc

我需要在 C 中定义一个类型结构,其中包含一个要 malloc 的数组:

#include <stdio.h>
#include <stdlib.h>

typedef struct mine
{
    int N;
    double *A;
} mine;

int main(int argc, char** argv) 
{
    int i;
    mine *m=malloc(sizeof(mine));
    printf("sizeof(mine)=%d\n",sizeof(mine));
    scanf("Enter array size: %d",&(m->N));
    m->A=malloc((m->N)*sizeof(double));
    for(i=0; i < m->N; i++)
        m->A[i]=i+0.23;
    printf("First array element: %lf",m->A[0]);

    return (EXIT_SUCCESS);
}

程序编译运行,整数赋值似乎工作正常。但是,该阵列没有正常工作。

有什么建议吗?我希望 m 保留一个指针(传递给函数等)。

谢谢。

最佳答案

这是你的问题:

scanf("Enter array size: %d",&(m->N));

应该是两个独立的步骤:

printf("Enter array size: ");
scanf("%d",&(m->N));

(以及调试检查:)

printf("The size entered appears to be %d\n", m->N);

这样,您就知道您是否获得了想要获得的值(value)!

关于c - 为结构中的数组分配内存(在 C 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16651770/

相关文章:

c++ - 通过指针算法计算数组长度

c - C中的结构定义问题

c - 特定情况下的段错误(核心转储)

c - 没有 free() 调用 malloc() 的真正后果是什么?它会使程序变得疯狂,例如永远循环吗?

c - 在 C 中执行背景的最佳方式

javascript - 映射数组数据并添加到 HTML 中

javascript - 从数组中获取第一个对象

c - C 中的 try-catch 语句

C:警告:格式 '%s' 需要匹配的 'char *' 参数

c - int * 常量转换