程序运行、编译环境:
win7 home basic x86 ; code blocks 12.11 ; mingw-20120426
#include <stdio.h>
#include <malloc.h>
void Init(int *p){
p=(int *)malloc(10*sizeof(int));
}
int main()
{
int *p,i;
Init(p);
for (i=0;i<5;i++){
scanf("%d",&p[i]);
}
for (i=0;i<5;i++){
printf ("%d ",p[i]);
}
return 0;
}
以上的代码,用cold blocks编译,没有错误,只有一个警告:第10行 p没有初始化。然后运行,输入数字后,程序就崩溃了。
但是如果代码是这样:
#include <stdio.h>
#include <malloc.h>
void Init(int *p){
}
int main()
{
int *p,i;
p=(int *)malloc(10*sizeof(int));
//Init(p);
for (i=0;i<5;i++){
scanf("%d",&p[i]);
}
for (i=0;i<5;i++){
printf ("%d ",p[i]);
}
return 0;
}
就没有任何错误和警告,程序能够正确运行。这是为神码????