| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1697 人关注过本帖
标题:问一道指针对象的题目。
取消只看楼主 加入收藏
a924677591
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-9-30
结帖率:0
收藏
已结贴  问题点数:15 回复次数:3 
问一道指针对象的题目。
问题 D: 指针对象(类和对象实验二)

时间限制: 1 Sec  内存限制: 128 MB
提交: 193  解决: 127
[提交][状态][讨论版]
题目描述

 在前面章节内容里已经学习了数组和指针之间的关系,现在对象数组练习题的基础上,把对象数组改为对象指针重新实现同一功能,看看使用对象指针与普通类型指针有何不同?比如要构造三个学生类对象,只能使用指针动态分配方法实现(new 指令),最后,我们对初始化后的n个对象中的姓名字段属性按升序排序,输出排序后的各对象姓名属性,特别要注意的是对对象指针初始化需要注意什么(提示:可以在类外面定义一个方法,该方法的参数是对象指针/数组,对传入的对象按要求进行排序输出)。

输入

第一行输入需要n个测试对象

每行依次输入各对象的属性

输出

输出排好序后的对象姓名属性,每行一个

样例输入

2
Tom 男 2012222222 计算机学院 13333333333
John 男 2013333333 计算机学院 12444444444
样例输出

John
Tom
//------------------------
#include <iostream>
using namespace std;
class student{
    char *name, *ID, *sex, *institute, *phone;
    public:
        void set_infor(char *name1, char *sex1, char *ID1, char *institute1, char *phone1)
        {
            name = name1;
            ID = ID1;
            sex = sex1;
            institute = institute1;
            phone = phone1;
        }
        char *getname(){
            return name;
        }
        char *getID(){
            return ID;
        }
        char *getsex(){
            return sex;
        }
        char *getinstitute(){
            return institute;
        }
        char *getphone(){
            return phone;
        }
        void output(){
            cout<<name<<endl;
        }
};
int main ()
{
    student *stu;
    char name[100], ID[11], sex[3], institute[100], phone[12];
    int i, n;
    cin>>n;
    stu = new student [n];
    for (i = 0; i < n; i++)
    {
        cin>>name>>sex>>ID>>institute>>phone;
        stu[i].set_infor(name, sex, ID, institute, phone);
    }
    for (i = 0; i < n; i++)
    stu[i].output();
}
//-----------
用这代码输入
2
Tom 男 2012222222 计算机学院 13333333333
John 男 2013333333 计算机学院 12444444444
出现的结果却是
John
John
//--------------
为什么会这样??是不是set_infor函数里指针的赋值不正确??能否详细的解释一下??为什么set_infor里的指针会一直指向栈内存里的name1, sex1, ID1, institute1, phone1???
希望能详细解释下,谢谢了!!!
搜索更多相关主题的帖子: 练习题 动态 姓名 
2017-04-09 11:05
a924677591
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-9-30
收藏
得分:0 
求大佬们解答 谢谢!
2017-04-09 21:48
a924677591
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-9-30
收藏
得分:0 
回复 4楼 wp231957
class student{
    char *name, *ID, *sex, *institute, *phone;
    public:
        void set_infor(char *name1, char *sex1, char *ID1, char *institute1, char *phone1)
        {
            name = name1;
            ID = ID1;
            sex = sex1;
            institute = institute1;
            phone = phone1;
        }
是不是因为这里的name, ID, sex, institute, phone是在堆空间里的指针, 然后给他赋了栈空间里的name1, sex1, ID1, institute1, phone1。才使得name, ID。。。这些指针一直指向栈空间里的指针??
2017-04-11 22:02
a924677591
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-9-30
收藏
得分:0 
有人吗?方便回答吗 谢谢
2017-05-08 22:27
快速回复:问一道指针对象的题目。
数据加载中...
 
   



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

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