#include <stdio.h>
int main()
{
int *p = NULL;
scanf("%d", p);
printf("%d", *p);
return 0;
}
这段代码试图向野指针p,写入用户输入的数,这是不可行的。我本以为程序会在scanf这行报错,但实际程序在printf行才报错。
这是由于scanf函数会判断传进来的指针参数是否为NULL,若为NULL则return 0;若不为NULL,则将用户输入的值写入指针参数中,并return 1
要在使用指针之前向系统申请内存。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p = (int *)malloc(sizeof(int *));
scanf("%d", p);
printf("%d", *p);
return 0;
}