| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 416 人关注过本帖
标题:指针的一个问题
取消只看楼主 加入收藏
qingke
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-2-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
指针的一个问题
#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,为什么还会这样子呢?
如果这样子不行的话,还有什么办法可以来交换两个指针的内容呢?
搜索更多相关主题的帖子: include system return 
2011-02-25 12:20
qingke
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-2-24
收藏
得分:0 
回复 3楼 点线面
把student temp={0};
改成struct student temp={0};
然后就可以编译了,也符合我的要求。
2011-02-25 22:15
qingke
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-2-24
收藏
得分:0 
回复 4楼 点线面
我用2楼的办法改好了,你的办法还需要加入新的指针,所以比2楼的看起来麻烦不少,所以很抱歉,分就不给你了。
2011-02-25 22:18
qingke
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-2-24
收藏
得分:0 
回复 7楼 点线面
我的也是VS2010的,按照2楼的程序是过不了的,把student temp改成struct student temp之后就可以了
2011-02-26 00:47
快速回复:指针的一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048471 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved