【发布时间】:2012-11-03 18:50:44
【问题描述】:
全部
我正在编写一个非常简单的动态二维数组声明的 C 代码,并使用 memset 对其进行初始化,然后打印出该值。我的代码如下:
float **env;
int i,j,num;
printf("Enter a number : \n");
scanf("%d",&num);
env = (float **)malloc(num*sizeof(float *));
for(i=0;i<num;i++)
{env[i] = (float *)malloc(num*sizeof(float));}
memset(env, 0, sizeof(float)*num*num);
for(i=0;i<num;i++)
{ for (j=0;j<num;j++)
{
printf("%f\t",env[i][j]);
if (j == num -1)
{ printf("\n\n");}
}
}
for(i=0;i<num;i++)
{free(env[i]);
}
free(env);
当我编译程序时,没有编译错误或警告,但是当我尝试打印出这些值时,我无法打印它们。然后我调试了程序,在memset 语句之后,env 2D 变量显示类似于
CXX0030: Error: expression cannot be evaluated,当我打印值时,会出现一个窗口,显示
Unhandled exception at 0x008b1e27 in ***.exe: 0xC0000005: Access violation reading location 0x00000000.
我尝试使用 2 个 for 循环将 2D 数组 env 显式初始化为 0,它运行良好,我也能够打印值,但是当我使用 memset 时它不起作用。如果有人可以帮助我,那将非常有帮助。谢谢。
【问题讨论】:
标签: c multidimensional-array initialization