我需要在 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/