本问题已经有最佳答案,请猛点这里访问。
#include
main()
{
int *p,i;
p = (int*)malloc(sizeof(int));
printf("Enter:");
scanf("%d",p);
for(i=1;i<3;i++)
{
printf("Enter");
scanf("%d",p+i);
}
for(i=0;i<3;i++)
{
printf("No:%d
",*(p+i));
}
getch();
return 0;
}
在这个C程序中,内存是在没有分配的情况下访问的。程序工作。如果没有分配就访问内存会出现什么问题?如果是,那么存储大小未提前知道的整数数据集合的解决方案是什么?
我的内心要求我补充一点:你读过手册了吗? 如果没问题,为什么malloc()需要一个参数来指定大小? 为什么你甚至期望这个工作?
当你说程序"有效"时,你的意思是什么? 你的意思是它做了你期望它做的事情吗? 如果是这样,你期望它做什么以及为什么?
您的代码显示未定义的行为,因为p的分配大小为一个int,但正在使用它,就像它是一个四个int的数组一样。 当行为未定义时,任何结