我需要在C语言中定义一个包含要进行malloc的数组的type-struct:
#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
函数不接受“提示”字符串。在使用其输出之前,始终检查其返回值! - Matmine
更改为yours
时,sizeof(* m)
比sizeof(mine)
更安全。 - Nik Bougalis