巧克力冰糕儿 2021-05-16 16:15 采纳率: 100%
浏览 2711
已结题

题目:建立一个对象数组,内放5个学生的数据(学号,成绩) ,用指针指向数组首元素,输出第1、3、5个

题目:建立一个对象数组,内放5个学生的数据(学号,成绩) ,用指针指向数组首元素,输出第1、3、5个学生的数据。 有大佬知道是哪里出了问题嘛?非常感谢!
  • 写回答

1条回答 默认 最新

  • qfl_sdu 2021-05-16 16:28
    关注

    问题挺多的。代码重写了一下,代码里加了注释,具体如下,ruyo如有帮助,请采纳一下,谢谢。

    #include <iostream>
    
    using namespace std;
    
    class Student
    {
    public:
    	void fun1(int xh,int cj);
    	void fun2();
    
    	int mxh;
    	int mcj;
    };
    
    
    void Student::fun1(int xh,int cj)
    {
    	mxh = xh;
    	mcj = cj;
    }
    
    void Student::fun2()
    {
    	cout << mxh << "," << mcj;
    }
    
    
    int main()
    {
    	Student s[4];
    	Student* p;
    
    	s[0].fun1(21,90);
    	s[1].fun1(45,89);
    	s[2].fun1(1,70);
    	s[3].fun1(34,92);
    	//s[4].fun1(67,75);//注意,前面只申请了4个原始,从0-3已经够4个了,这里就越界了
    
    	p = &s[0];
    
    	cout << (*p).mxh <<"," << (*p).mcj <<endl;
    	cout << (p+2)->mxh <<"," << (p+2)->mcj <<endl;
    	//cout << (p+4)->mxh <<"," << (p+4)->mcj <<endl; //这个越界了
    
    	getchar();
    	getchar();
    	return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月13日
  • 已采纳回答 1月5日