| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 526 人关注过本帖
标题:指针赋值的区别,请指教
只看楼主 加入收藏
meimeng515
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-10-6
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:7 
指针赋值的区别,请指教
//有一个问题
#include <iostream.h>


struct Person
{
  char name[20];
  unsigned long id;
  float salary;


};
Person num[6]={{"jone",12345,339},
{"david",1382,449.0},{"marit",27614,311},{"jasen",4235,623},{"peter",23876,400},{"yoke",12335,511}};

void main()
{
    Person *p1[6]={&num[0],&num[1],&num[2],&num[3],&num[4],&num[5],};
    //Person *p1=num;替换上一句为什么不行??????????
    Person *temp;
    for(int k=0;k<6;k++)
   {
      cout<<p1[k]->name<<endl;
  
   }
  /*
  最简单的一种方式
    Person temp;
    for(int i=1;i<6;i++)
        for(int j=0;j<6-i;j++)
        {
          if(p1[j]->salary>p1[j+1]->salary)
          {
            temp=p1[j];
            p1[j]=p1[j+1];
            p1[j+1]=temp;
         
         
          }
        
        
        }
  
  
  
  */


}

搜索更多相关主题的帖子: 赋值 指教 指针 
2009-10-06 23:40
meimeng515
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-10-6
收藏
得分:0 
这里面怎么没人回呀
2009-10-06 23:52
flyingcloude
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:6
帖 子:598
专家分:1512
注 册:2008-1-13
收藏
得分:5 
不知道你报什么错误,我在能够正确运行的

你能学会你想学会的任何东西,这不是你能不能学会的问题,而是你想不想学的问题
2009-10-06 23:54
最左边那个
Rank: 4
等 级:业余侠客
威 望:3
帖 子:97
专家分:201
注 册:2009-4-24
收藏
得分:15 
Person *p1=num;
这一句中,num是长度为6的结构数组的地址,而Person *p1定义出来的是结构类型的指针变量(非结构数组指针变量),这两者在类型上就不一样了,所以,就不能用Person *p1=num替换!
2009-10-07 13:28
flyingcloude
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:6
帖 子:598
专家分:1512
注 册:2008-1-13
收藏
得分:0 
回复 4楼 最左边那个
这样赋值肯定是没有错的。只是他自己的程序的循环中还有一点需要作修改。
把原先的那个修改成红色的,那就行了

#include <iostream.h>


struct Person
{
  char name[20];
  unsigned long id;
  float salary;


};
Person num[6]={{"jone",12345,339},
{"david",1382,449.0},{"marit",27614,311},{"jasen",4235,623},{"peter",23876,400},{"yoke",12335,511}};

void main()
{
 //   Person *p1[6]={&num[0],&num[1],&num[2],&num[3],&num[4],&num[5],};
    Person *p1=num;//替换上一句为什么不行??????????
    Person *temp;
    for(int k=0;k<6;k++)
   {
      cout<<p1[k].name<<endl;
 
   }
}

你能学会你想学会的任何东西,这不是你能不能学会的问题,而是你想不想学的问题
2009-10-07 15:55
最左边那个
Rank: 4
等 级:业余侠客
威 望:3
帖 子:97
专家分:201
注 册:2009-4-24
收藏
得分:0 
回复 5楼 flyingcloude
哦,不好意思,是我搞错,抱歉抱歉,误人子弟了!哈
2009-10-07 18:47
fgchg911
Rank: 4
等 级:业余侠客
威 望:1
帖 子:131
专家分:204
注 册:2009-9-6
收藏
得分:0 
回复 楼主 meimeng515
cout<<p1[k]->name<<endl;
这里p1[k]已经是间接访问,可以改成
p1[k].name

(p1+k)->name
2009-10-08 04:49
meimeng515
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-10-6
收藏
得分:0 
谢谢大家啊
2009-10-09 15:13
快速回复:指针赋值的区别,请指教
数据加载中...
 
   



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

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