以下这段,可以运行,但是有"NULL pointer assignment"的警告,是什么原因,该如何修改,忘清楚告知,谢谢了!!!!!!!!
#include <stdio.h>
int swap(int *p1,int *p2);
int main()
{
int *pointer_1,*pointer_2,*pointer_3;
scanf("%d,%d,%d",pointer_1,pointer_2,pointer_3);
if(*pointer_1>*pointer_2)
{
swap(pointer_1,pointer_2);
}
if(*pointer_1>*pointer_3)
{
swap(pointer_1,pointer_3);
}
if(*pointer_2>*pointer_3)
{
swap(pointer_2,pointer_3);
}
printf("%d,%d,%d\n",*pointer_1,*pointer_2,*pointer_3);
return 1;
}
int swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
return 1;
}
----------------解决方案--------------------------------------------------------
没有申请空间
论坛有很多这样的帖,讲的详细,自己看
----------------解决方案--------------------------------------------------------
没找到啊
我只知道加上3个整形变量就没这个错了,能解释下什么原因么?
----------------解决方案--------------------------------------------------------
不好意思,是我看错了
int *p;
p=(int *)malloc(sizeof(int));加上看行么?
[此贴子已经被作者于2007-8-25 18:49:00编辑过]
----------------解决方案--------------------------------------------------------
我编译时没有任何问题```但不能运行```windows强行关闭``
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <malloc.h>
int *pointer_1,*pointer_2,*pointer_3;
int *p;
p=(int *)malloc(sizeof(int)*3);
pointer_1=p;
pointer_2=p+1;
pointer_3=p+2;
红色部分```是添加的``
现在程序能运行了```
----------------解决方案--------------------------------------------------------
谢谢了,如果能说一下原因就好了
----------------解决方案--------------------------------------------------------
原因你能看书就好了,你多浏览论坛以前的帖子,会有你想要的答案
----------------解决方案--------------------------------------------------------
我也刚学指针,说说原因看楼主同不同意:
主函数里定义了三个指针,但这三个指针指向哪几个内存单元是未知的,输入三个数到这三个单元里当然是很危险的。
----------------解决方案--------------------------------------------------------
如果指针是指向构造类型的变量而又未申请空间,可能出现多个变量共用相同的内存空间的情况。本人曾经遇到这种情况,调试了好几天都没发现
----------------解决方案--------------------------------------------------------