一个关于指针的问题
#include<stdio.h>main(void)
{ int a;
int b;
int c;
int *temp;
int *p1;
int *p2;
int *p3;
p1=&a;
p2=&b;
p3=&c;
printf("input a,b,c:\n");
scanf("%d%d%d",&a,&b,&c);
if(*p1>*p2)
{ *temp=*p1;
*p1=*p2;
*p2=*temp;
}
if(*p1>*P3)
{
*temp=*p1;
*p1=*p3;
*p3=*temp;
}
if(*p2>*P3)
{
*temp=*p2;
*p2=*p3;
*p3=*temp;
}
printf("a=%d,b=%d,c=%d\n",a,b,c);
printf("a=%d,b=%d,c=%d\n",*p1,*p2,*p3);
}
该代码是输入3个数字,有小到大输出。。
输入数字得出的结果正确,但在最后有一句话,是null pointer assignment,好像是用了空指针,能不能具体讲讲,
如果在交换处,改为temp=p2;
p2=p3;
p3=temp;
只交换指针的指向,就不会出那句话,不知道为什么