#include <stdio.h>
#include <malloc.h>
#include <string.h>
void f(int *p)
{
//p=(int *)malloc(sizeof(int));
*p=3;
printf("%d\n",*p);
}
int main()
{
int *p=NULL;
f(p);
//printf("%d\n",*p);
}
上述代码在VS中运行是错误的,因为当把p传给函数f的时候,p是一个空指针,让后*p=3;相当于给空指针赋值。
int main()
{
int *p=NULL;
*p=3;
printf("%d\n",*p);
}
这个代码跟上面的含义是一样的;
int main()
{
int *p=NULL;
p=(int *)malloc(sizeof(int));
*p=3;
printf("%d\n",*p);
}
当加上p=(int *)malloc(sizeof(int));这行代码后,就可以打印出3来了,因为给p指定了新的地址。
int main() {
int a=3;
int *p=&a;;
*p=4;
printf("%d\n",*p); }
这样是对的。切记在定义指针之前,一定要给他指定值;int *p=NULL;这样空指针的话一定要小心!
空指针错误
最新推荐文章于 2024-06-23 06:00:00 发布