函数参数为地址的疑问

程序运行、编译环境:

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;
}
就没有任何错误和警告,程序能够正确运行。这是为神码????

看来我很有必要去温习一下基础了……

你可能感兴趣的:(函数,基础,指针)