指针的一个问题
#include "stdio.h"void main(void)
{
struct student{
unsigned int num ;
float score;
}stu[3]={{20110205,100},{20110215,99},{20110225,88}};
struct student *p;
int i;
for(i=0;i<3;i++)
{
for(p=stu;p<=&stu[2];p++)
{
if(p->score>(p+1)->score)
{
struct student *p0,*p1;
p1=(p+1);
*p0=*p;
*p=*(p+1);
*p1=*p0;
}
}
}
printf("%d%.1%f",stu[0].num,stu[0].score);
system("cls");
return(0);
}
程序能够生成,语法是没问题的。但是在运行到 *p0=*p;这一语句的时候,就会出现内存错误,我从VS2010看到的此时p0的指针地址是未知的,指针内容也是未知,但是我已经把p地址的内容给了p0,为什么还会这样子呢?
如果这样子不行的话,还有什么办法可以来交换两个指针的内容呢?