3

我需要在 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保留一个指针(传递给函数等)。

谢谢。

4

2 回答 2

8

这是你的问题:

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);

这样,你就知道你是否得到了你想要得到的价值!

于 2013-05-20T14:41:32.103 回答
0

如果@abelenky 很好地回答了您的问题,但我总是被告知将 malloc 的结果从 void * 中转换为您实际使用的任何内容。

mine *m = (mine *)malloc(sizeof(mine));
于 2013-05-20T15:06:08.177 回答